MemoryStone
Memorize and teleport to special Memory Stone structures in game using your compass.
This is a great for exploration: You can head in a direction and explore the depths of caves, but when you want to go home it's a simple teleport out. Also, because you have to find the Memory Stones first, it makes exploration of existing servers with pre-setup Memory Stones a little more rewarding.
I would find that I would build myself a little home and maybe explore a little bit, but not too far in case I get lost.. I'd also find very interesting parts of my world, but would never return there because it's too far or I just can't find it again. Now it's a matter of building Memory Stones where significant marking points are. Have a castle in the sky? No need for ladders..
Changes in 1.1.0 & 1.0.9
- Interaction with other sign based plugins sometimes throws NPE's onSignChange event.
- pointCompassOnly config option if you don't want teleportation, but just set compass to destination.
- Fixed small quirk where memorizing a stone would select that stone to teleport to instead of leaving it as it was before.
- Fixed a pretty show-stopping bug where the compass totally didn't work. Whoops.
Changes in 1.0.8
- Fixed up an NPE when only one location is memorized and you try teleport stone to stone from it
- Fixed a small bug if you use lava buckets in water to create your memory stones.
Changes in 1.0.7
- Set the default distanceLimit in structureTypes.yml to infinite on all default structure types. This was tripping a lot of people up.
- Replaced lightningEffect config option with effects.lightningOnCreate and effects.lightningOnBreak
- Added effects.lightningOnTeleportSource and effects.lightningOnTeleportDestination for effects when teleporting
- Allow for teleportItem to be set to NONE, which disabled teleporting with an item.
- Added stonetostone.enabled, to enable teleporting directly from a Memory Stone (without compass)
- Added stonetostone.item and stonetostone.maxUses if you want to have people pay for stonetostone teleporting
- Remove 'already memorized' message if stonetostone.enabled
- Fixed up a charges left bug (was rolling over to 3 charges regardless of max uses)
- Default language refers to <material> now instead of compass (lang.chargesleft, lang.consumed, lang.teleportitemnotfound)
Download
If you are upgrading from older than 1.0.5, you need to remove the structuretypes.yml to so that it can regenerate and include the new teleportation, memorization and build costs..
Installation
Simply put the memory-stone.jar into your plugins folder. Upon first run, you'll see MemoryStone/structuretypes.yml that you could play around with if you'd like to customize the memory stone structure on your server.
When you start creating and memorizing Memory Stones, you will also see locations.yml and structures.yml files - they are for storing the extra player and physical structure data for your worlds.
There's also a configuration.yml file generated, scroll down to the bottom to see the configuration options available.
Setup
Create a 3x3 Stone slab with a 3 high Obsidian pillar in the middle like so :
Put a sign somewhere on it and enter the first line of the sign as the name you'd like to give the memory stone :
And if all is well, you'll get a green 'Memory Stone' sign :
Structure Types
Please see the image library here to see all the different structure setups
There are a few different structures, basically :
- Local: Teleport from your location to a Local Memory stone in your current world within distance
- Global: Teleport from where you are to a larger range in the current world, but doesn't need to be memorized first
- Crossworld: Teleport from any world to any crossworld stone. Distance doesn't matter.
- Global Crossworld: Same as a crossworld teleport, but you don't need to find and memorize it first.
- NoTeleport: Players can't teleport out while within a certain distance of these.
Economy Support
As of 1.0.5 with economy support, when setting up a sign, you can enter a memorization cost / teleportation cost like so :
When you complete that, it will add the preconfigured base costs and display that on the sign :
Usage
All of the following needs to be done with a compass in hand:
Left click on the *sign* of a memory stone. You'll get a confirmation to say that you have successfully memorized the location.
If you have Spout installed (and Spoutcraft client), you can right click to bring up the following screen - select destination and it'll teleport you there:
Similarly, you can hit a shortkey key (default 'C') to show that screen as long as you have a compass in your inventory somewhere. If you have Spout on the server and running Spoutcraft :)
If you don't have Spout installed, you can right click to teleport back to the stone you've just memorized. You need to stand still for 3 seconds after you've activated teleporting, and if you have multiple memory stones memorized, you can left click to cycle to your destination.
As of 1.0.7, if you have glowstone dust in your inventory (configurable) you can left click on a memory stone sign to cycle through destinations and right click to teleport without the use of a compass. If you have Spout & Spoutcraft, you only need to right click on the sign.
Configuration Options
In the configuration.yml file, you can change these options to customize MemoryStone for your server:
- lang.* - This is all the text the players will see from this plugin.
- teleportItem - Configure to use something different to a compass if you like. Accepts names or typeId's
- castingTime - The time the player (and target if teleporting another player) needs to stand still for until teleport happens.
- cooldownTime - The cooldown after teleporting successfully, in seconds.
- fizzleCooldownTime - The cooldown after fizzling (player cancelled teleportation somehow), in seconds.
- maxUsesPerItem - How many charges an item has before it is consumed. If this is set to zero, it will be unlimited.
lightningEffect - Whether to show the lightning effect when a Memory Stone structure is setup correctly.No longer supported as of 1.0.7, see effects.*- sortByDistance - If true, sorts the location list by distance instead of alphabetically
- economy.enabled - Enable economy support. You may have economy plugged in but don't want to use it for memory stones
- economy.ownerGetsPaid - The person who setup this memory stone will get paid whatever anyone spends on this memory stone
- economy.addCustomValue - Allows a person setting up a memory stone to specify extra costs (above base costs) on placing the sign.
Added in 1.0.7:
- effects.lightningOnCreate - Lightning effect on creation of memory stones
- effects.lightningOnBreak - Lightning effect on breaking of memory stones
- effects.lightningOnTeleportSource - Lightning effect when teleporting (player source location)
- effects.lightningOnTeleportDestination - Lightning effect when teleporting (player destination location)
- stonetostone.enabled - Enable stone to stone teleportation
- stonetostone.item - Item to consume on stone to stone teleporting - set to NONE if you don't want it to consume anything
- stonetostone.maxuses - Maximum number of uses on the item to consume before destroying it - set to zero for infinite or to 1 for a single use.
Permissions
- memorystone.*: Gives access to all normal MemoryStone permissions
- memorystone.op: Allows free, zero casting time and no cooldown to user, default: false
- memorystone.build: Allows user to build Memory Stones, default: true
- memorystone.break: Allows user to break Memory Stones, default: true
- memorystone.use: Allows user to teleport to Memory Stones, default: true
- memorystone.usestonetostone: Allows user to use stone to stone teleportation
- memorystone.usefree: Allows user to teleport without costing charges (if applicable), default: false
- memorystone.useonothers: Allows user to teleport others, default: true
- memorystone.usewithoutcooldown: Allows user to teleport without cooldowns, default: false
- memorystone.useinstantly: Allows user to teleport without casting time, default: false
- memorystone.allmemorized : User will doesn't need to memorize stones.
- memorystone.create.*: Can create any structure
- memorystone.create.local: Can create local memory stones
- memorystone.create.global: Can create global memory stones
- memorystone.create.crossworld: Can create crossworld memory stones
- memorystone.create.crossworldglobal: Can create crossworld global memory stones
- memorystone.create.noteleport: Can create noteleport zone stones
Known Plugin Incompatibilities
- SpoutTrade: Because of using the right-click on players, it requests a trade and teleports.. Not sure how to stop SpoutTrade from firing.
Credits
Some shout out to some awesome devs out there!
- The Bukkit team
- The Spout team - Go install Spout and Spoutcraft. Now. Believe me, it's a better place.
- tprk77 for HealingTotem - I used his awesome structure code - this should really be in the Core Bukkit code.
- krinsdeath for ChestSync - I used some of his coding ideas and signage code.
- The guys who built BlueTelepads - Their code helped me get the yaw and pitch correct.
- Nijikokun for Register - Awesome work!
Also, credit goes to the following people for their fantastic input:
Tylui, PhantomX, Kaiemi, hammerKlavier and SirMonsterSlayer
@CmdrDats
Thanks for getting back to me quite fast. I have a few other plugins running on the server, but simple ones, nothing I can think of that would affect the detection of the event. The list:
dynmap 0.23, flatearth, higherexplosives, memorystone, scubakit, pickboat, spongerestore, timefold. Just in case that helps.
For the lightning effect, from the destination stone as the player arrives, please. Although an option, like 0 for none, 1 for source only, 2 for dest only, 3 for both, might be good for others... hmm.
I personally plan for the memorystones to be kind of rare, set up by admins only, and... kind of a pretty major deal on the server: the *only* method of fast travel. So I kind of want them to be dramatic when they are used.
(It sounds like I will need permissions to avoid all players having the right to build them. That's OK, I suppose; my plan for your plugin doesn't work without that restriction, so I'll get permissionsbukkit and set 'em up. It's worth it)
One more thing (yes... I know ;P Sorry.)... I like the use (and expenditure) of a compass to teleport. Your plugin currently implements what I'd call a "recall" system (Mark and Recall from, say, Morrowind), with multiple "Marks." The vision I had in mind for my use of the memorystones is as a "waypoint" system. Almost exactly like the one provided in Diablo 2. That is, you can memorystone yourself directly to any other memorystone you've memorized, but only if you are actually near a memorystone (say, a 10 block vicinity) when you try to do it. (Like how you can't use a D2 waypoint from just anywhere, but when you touch one waypoint you can teleport to any other.)
I have read the comment thread, and someone asked for this sort of thing for kind of a different reason. This request of mine is quite optional to even consider, of course :P, I'll use the plugin the way it is if this change just doesn't fit with your idea of your plugin. But your plugin is a few changes away from being absolutely perfect for what I had in mind, and nobody else's even comes close (and trust me, I've looked!). So I figured I'd ask about it: the feature of "memorystones allow teleportation only within a close range of another memorystone."
This would be used for fast travel exclusively, rather than escaping dungeons, so I'd disable altogether, if I could, the ability to teleport yourself from any arbitrary place directly to a memorystone with a right-click. You see it's a couple (hopefully small) changes, that would completely alter the experience of the plugin.
Anyway, thanks in advance for even reading all this. :P
@hammerklavier
Good morning :) Hmm, I haven't tried with the dynmap's 'signs into overmap' function, but can definitely see that it could break because of it in the way you describe.. I'll see if I can reproduce the issue on my side and see if I can figure out how to fix it (i have a sneaky suspicion that i just need to remove checking for the onSignChange event cancellation)
I'll add a config option for a lightning effect on use of memorystone :) do you want it where the person teleports from, or at the memory stone they teleport to? or both? :)
And, no - if you don't have permissions installed, you are free to do anything
Hello, CmdrDats. Your plugin looks very promising to me. I'm having some trouble with it though, and I was hoping I could ask you for some help.
I've tried to make the standard local stone, 3x3 pad of smoothstone topped with a 3x1 pillar of obsidian. When I place a sign on it on the middle block of the 3, though, nothing happens whatsoever after I write a word on the sign. It acts precisely as if the plugin is not loaded.
The plugin reports that it's loaded 5 standard structure templates and 0 structures (I'm guessing because I haven't built any yet) when it loads.
My two guesses are: 1. I have dynmap, and I'm using dynmap's built-in "make signs in the game world to put labels on the overmap" function. Is dynmap's sign listener conflicting with yours in some way? 2. I am not running permissions, and kinda don't want to start. Is it just not working because it requires permissions and they're not present? I'm op on the server, but I'm thinking maybe that isn't good enough?
Those are my two guesses. I double- and triple-checked that my structure was built right, tried placing the sign on different sides of the structure, etc.
Any advice would be great.
EDIT: If I right click with a compass in hand, it says I have nothing memorized. So it's absolutely confirmed the plugin is loading, etc.
It appears there's a lightning effect upon successful creation of a memorystone? Could I beg for a lightning effect upon any successful *use* of a memorystone as well? I think that would be very cool ;)
@astinax
Just break part of the structure (Base is easiest), the server should message you and tell you that you've destroyed a memory stone.
@Eymberness
Cool :) Glad to be of assistance and that you like the mod!
Oh, Thanks! I'll have my server host change that and if it doesn't work get back to you!
You're totally awesome for the quick reply. It's nice when devs care about people :D
Absolutely love your mod, by the way.
@Eymberness
global stones work for about double the distance of the local stones by default and don't need to be memorized.
if you set the maxDistance in the structuretypes.yml file to zero for global (or local) stones, it'll work at any distance.
Does that answer your need?
@astinax
That's strange - could you PM me and send me your plugin list, and server logs (after you get the 'broken' sign)?
How do I delete a memory stone ?
I'm having some issues with the stones in 1.8
It is my understanding that no matter where you are, you can still get back to global... or am I wrong?
Is there any way to make it so that no matter what, no matter where you are in the world, you can always access the other memorystones? That would make life so much easier.
If not, what is the alternative? Can someone please give me detailed directions so that I'm not just stuck out in the middle of nowhere?
Well we aren't sure how much power this teleport gives... We play survival and actually want players to not have it the easy way. So we will imit the teleportation anyways but my friend suggested it might be good this way...
I think it will be enough if you need the compass to save the location and for teleport (+icon money)
@SirMonsterSlayer:
That's a pretty good idea, but it's a bit hard to make that a visual marked difference - sometimes you pay and other times it's free - Don't you think it would get a bit confusing?
I would say that perhaps a better way would be to add a button to the memorystone, be able to hit the sign board to select a location from that memory stone, then click the button to teleport - if you have spout, you can just hit the button and it shows you the destination list.
Of course, that opens up a whole different kettle of fish, such as being able to define "networks" of teleportation instead of using player memorized destinations... I think it might detract too much from what is really the core essence of this plugin though? (which is, compass = teleport device, memory stone = memorizable destination)
Thoughts?
New request for config... when you are next to a stone you teleport for free and when you are far away you have to pay :P
@skeletonofchaos
I'll definitely look into letting you use a keypress - That way you won't even need a compass in your hotbar! For simplicity though, you will still need a compass in your inventory - will that be ok? Or would you want it to work without worrying about an item altogether?
The only thing I'm unsure of is how to handle memorization if you don't have a compass..
Nice plugin it is now the main warp plugin for my server. However could you allow us to use a keypress if we have spoutcraft (maybe make it a config option?). So i could press say p to warp or something of the like?
@ryan_the_leach:
Glad you like it! The config option for only warping within another distance of another is in the pipeline for 1.0.6 :)
Im Really liking this, but it seems a little overpowered.
would LOVE for a config option that you can only warp to a memory stone from within a distance from another.
@Tylui:
Good idea, I've added that ticket to the issue tracker, will get it out in the next version!
Another idea! When you right click on someone to teleport them, it'd be neat if the menu showed who you were teleporting so you know if you mis-clicked or not. :P
@SirMonsterSlayer:
As soon as CraftBukkit supports 1.8, I'll definitely be making sure this works for it! :D
Well, the basic premise is that you don't teleport from stone to stone, but from compass (anywhere) to stone. So in that sense, yes, you can teleport to any crossworld teleport, in any world. Provided you've found and memorized it first :)
A global crossworld teleport means that you don't need to first find the stone and memorize it - it'll be available for anyone and everyone to see on their compass and teleport to.
We dont use your plugin yet but it seems we do soon. I hope you update it for 1.8 ;D
anways a mate asked me how the crossworld teleport works.... can you teleport from any stone to any stone crossworld ?
some more text about this would be great thanks=)
@Squlli
Could you open an issue at GitHub, and include details like :
CraftBukkit version, Plugins you've got installed Your server log any other info you can think of (more is better)
That way I can replicate your server on my machine and find out what the problem is so that I can help you. I'm busy right now fixing the dependency problems and should have that up soon.