Inactive [INACTIVE][TP] EasyTravel - Cube Based Teleport Regions [1.1-R4]

Discussion in 'Inactive/Unsupported Plugins' started by MiHo, Apr 30, 2011.

  1. Offline

    MiHo

    EasyTravel [Version 1.3]

    EasyTravel is a region based teleport system, used for creating realistic transport system by using teleports, like with boats, ships and trains.


    Usage Example Video:
    Video on YouTube

    Features:
    • Allows teleporting to a warp point only, if you inside a TravelPort.
    • Easier and Simpler to understand than other similar tools for that kind of teleports.
    • Scheduled Departs
    • Paid teleports with iCconomy 4,5&6, Essentials Economy, MultiCurrency and BOSE. (Optional)
    • Lock TravelPorts with a password.
    • Selections done by WorldEdit wand. (Currently WE required!)
    • Supports every up to date permissions system.
    • Multiworld support.
    • Supports translating the interface.

    How To Setup (open)

    1.) Download the ZIP Archive and extract it into you Plugins folder of Bukkit.

    2.) Also Download WorldEdit (Required for Configuration!)
    2b.) If you use Permissions don't forget to set them!

    3.) You are ready to create your first TravelPort by selecting a cube with the WorldEdit //wand tool and the EasyTravel Command "/port create My First TravelPort"


    Create First Travel Route (open)

    1.) Select a cube (will be the first TravelPort) with the WorldEdit wand tool.

    2.) Enter the command: /port create XYZ123
    XYZ123 should be the name of the TravelPort. (Could contain spaces too!) (Shown to the user!)
    This creates a TravelPort with the selected area.
    Notice: If somebody travels to the port, it will arrive at the location where you are standing, when you entered the command! (You could change the position later with the /port destination command!)

    3.) Create another TravelPort with the WorldEdit wand selection and the /port create command.

    4.) Now go inside the second TravelPort and enter the command: /port link XYZ123
    This will connect the two TravelPorts. Using /depart while standing inside a TravelPort will teleports you to the linked TravelPort.

    5.) Optional: Now you could set a price or a password for the TravelPort by using one of the following commands, while standing inside the TravelPort:
    /port price 10.0 ...or another price instead of 10.0.
    /port password ABC ...or another password instead of ABC.


    Permissions (open)

    Allowed to everyone if no Permissions is detected:
    Code:
    easytravel.depart
    Allows the user to use the TravelPorts.

    Allowed to Operators only, if no Permissions is detected:
    Code:
    easytravel.create
    Allows the user to create and manage it's own TravelPorts.
    Code:
    easytravel.info
    Allows to use the "/port info" command, to get information about the TravelPort you are currently inside.
    Code:
    easytravel.list
    Allows the user to list and search all existing TravelPorts.
    Code:
    easytravel.compass
    Allows to point the compass to the TravelPort.
    Code:
    easytravel.port
    Allows to port directly to the TravelPort from everywhere. (Should only given to Mods and Admins!)
    Code:
    easytravel.moderate
    Allows the user to manage TravelPorts they don't own.
    Code:
    easytravel.administrate
    Allows the user to reload the configuration ingame.

    Commands (open)

    Code:
    /depart
    Teleports you to the target TravelPort, when you are inside a TravelPort. (Needed Permission: easytravel.depart)
    Code:
    /port
    Command used for creating and managing the TravelPorts. Use /port help for more information.


    Changelog:
    Version 1.4:
    • Support for 1.1-R5-SNAPSHOT
    Version 1.3:
    • Support for SuperPerms
    • Added Support for iConomy 6 and MulitCurrency (Requires Java 7)
    Older Changelogs (open)
    Version 1.2.1:
    • Improved way to check if user is inside a TravelPort. If EasyTravel use to much cpu, it reduce the refresh rate itself. (Prevent causing lags, when too much players online.)
    Version 1.2:
    • Added support for iConomy 5, Essentials Economy and BOSE.
    • Added support for Scheduled Departs.
    • Added notifying admins on version outdated. (optional, configurable)
    Version 1.1:
    • Added ability to only allow defined group of users.
    • Some code clean up, and speed boost.
    Version 1.0:
    • Initial Release of EasyTravel
     
  2. Offline

    anon

    Will use this for sure. Much more realistic then /warp. Now making ships, ballons and all kinds of transportation devices :)

    Could you add a "warmup" times to the /depart command? So it wouldnt be instant. Also, messages that indicates that player reached X destination wold fit well.
     
  3. Offline

    MiHo

    Of Course, would be easy to do!

    The player already reach a message. (As you can see in the video.) Or do you mean a message to everybody?
     
  4. Offline

    anon

    Oh, my bad hehehe, I see now. Video is on another language, So i had no idea it was a message. [​IMG]
     
  5. Offline

    MiHo

    That's true. It's a video from a german live server, but it also shows that the plugin supports multiple languages ;)
    You also get a message when you are getting inside a TravelPort, which tells you that you can use the TravelPort and also describes the usage to newbies.
     
  6. Offline

    Asymetrikon

    Sounds nice. Will give it a try. :)
     
  7. Offline

    Plague

    Don't use a picture for the header, when your hosting goes down, the header does with it.
    Changelog has to show lates changes, only the rest can be a spoiler
     
  8. Offline

    Damian Mason

    Hey I was rummaging through your source and I was wondering if you'd be up to something.

    Instead of using the /depart command can you have it trigger on a redstone event? And then where it checks if the player is inside the port it instead finds all the players in the port and teleports them.

    The reason I'm asking is because I want to use this with Falsebook's toggle area and a redstone clock to have the vessel physical disappear when it leaves. Or perhaps you can just remove the vessel yourself based on what's inside the defined cuboid.
     
  9. Offline

    yoyo

    Nice plugin :3
     
  10. Offline

    GmK

    So how exactly is this easier than VoxelPorts? I am sure @przerwap would like to know too.

    I commend your effort to get something going, but a Voxel is not any more commands or effort to set up. So I'd say - keep your plugin, but please remove sniding remarks about other plugins :)
     
  11. Offline

    przerwap

    Oh-em-gee Guyz! This plugin is totally pr0, it is soooo much bettar than VoxelPort,

    I love how this guy actually forces the CPU to check all the coordinates before he decides whether they are valid.

    Code:
    public final boolean contains(Location location) {
            boolean insideX = Math.min(edge1.getBlockX(), edge2.getBlockX()) <= location.getBlockX() &&
                    location.getBlockX() <= Math.max(edge1.getBlockX(), edge2.getBlockX());
    
            boolean insideY = Math.min(edge1.getBlockY(), edge2.getBlockY()) <= location.getBlockY() &&
                    location.getBlockY() <= Math.max(edge1.getBlockY(), edge2.getBlockY());
    
            boolean insideZ = Math.min(edge1.getBlockZ(), edge2.getBlockZ()) - 1 <= location.getBlockZ() &&
                    location.getBlockZ() <= Math.max(edge1.getBlockZ(), edge2.getBlockZ()) + 1;
    
            return insideX && insideY && insideZ;
        }
    Thats just ... so ... pathetic?
    You know, there is this thing in programming when you have a boolean statement like so:
    if( A && B && C);
    The CPU will check whether A is true, if it is it will continue onto B and if its not true ( false ) than it will skip everything else since its bound by the '&&' expression which is only true if A & B are true, so if Either one is not true the whole expression is false so the computer knows it doesn't have to do any more calculations and simply returns false.
    But what I like even better is that the guy says that this has multiworld support, and the method above that checks whether a player is inside a portal does Not check whether or not you are inside of the same world that the Portal's zone is in.

    But on a side note, I rewrote VoxelPort two weeks ago but haven't had time to keep working due to it being the end of the school year .... sooo ... VoxelPort update within the next few days, having nothing to do with this Pathetic attempt of a plugin.
     
  12. Offline

    Plague

    So, I removed your offtopic discussion as this is a plugin release thread. I left only those posts that are somewhat related to the actual plugin.
     
  13. Offline

    Pencil

    And that still doesn't give you the right to talk shit. I dont see where he mentioned it being better than Voxelport, so there is really no need to show off that your plugin is superior, because if it is, you do not need to advertise ur stuff like you are 1337 Java Guru and everyone else is shit.

    If you think you are so pro, why are you even in this thread? He did this for free, so you would be better off not complaining just because he mentioned it as an "alternative to Voxelport". Get over yourself already.

    Anyways @ thread:

    Looks like a pretty nice little plugin to have :) I'll test it out in a bit.
     
    Crash likes this.
  14. Offline

    MiHo

    Is it all right if the image is stored on github? Can't think of GitHub going down?
    If not, I will remove the image immediately!


    Added redstone support to my todo list!

    Done so...


    Don't copied your plugin! I've only written a plugin that incorporates the features which were rejected by VoxelPort, after requesting them by multiple users!
    And yes I know that, done it so before, but than decided that the minimalistic speed boost isn't as important for me as the clarity of the code!


    EDIT:If the code part is so important for you, if rewritten it to this one:
    Code:
        /**
         * Checks if the location is inside the TravelPort.
         *
         * @param location the location to check.
         * @return true, if the location is inside the TravelPoint.
         */
        public final boolean contains(Location location) {
            boolean insideX = Math.min(edge1.getBlockX(), edge2.getBlockX()) <= location.getBlockX() &&
                    location.getBlockX() <= Math.max(edge1.getBlockX(), edge2.getBlockX());
    
            if (insideX) {
                boolean insideY = Math.min(edge1.getBlockY(), edge2.getBlockY()) <= location.getBlockY() &&
                        location.getBlockY() <= Math.max(edge1.getBlockY(), edge2.getBlockY());
    
                if (insideY) {
                    boolean insideZ = Math.min(edge1.getBlockZ(), edge2.getBlockZ()) - 1 <= location.getBlockZ() &&
                            location.getBlockZ() <= Math.max(edge1.getBlockZ(), edge2.getBlockZ()) + 1;
    
                    if (insideZ) {
                        return true;
                    }
                }
            }
    
            return false;
        }
    Now it's the same speed result, but much more code clarity!
    However, I am not convinced that this tiny speed advantage compared to Bukkit plays a major role!
     
  15. Offline

    przerwap


    Code:
    public boolean inZone(Location loc) {
                return (world.equalsIgnoreCase(loc.getWorld().getName())) // Same world?
                        && (loc.getBlockX() <= zonehighx) && (loc.getBlockX() >= zonelowx) // Match X
                        && (loc.getBlockZ() <= zonehighz) && (loc.getBlockZ() >= zonelowz) // Match Z
                        && (loc.getBlockY() <= zonehighy) && (loc.getBlockY() >= zonelowy); // Match Y
            }
    ^ Clean, quick, easy-to-read.

    Your code didn't provide clarity, only three unnecessarily nested if-statements
     
  16. Offline

    MiHo

    Right.. don't like such long source lines, but I will change it...

    But why do you store the name of the world instead of the world object instance?
    Wouldn't it be faster to compare to instance pointer instead of a two Strings? I'm not a Java Guru, but comparing to strings (including ignoring the case!) seems to be one of the slowest comparisons you can do?
    I think that slows the function much more than my also not perfect way.
     
  17. Offline

    przerwap

    Because it wouldn't be an instance, but a pointer instead.
    With that said, the CraftWorld class (World inside bukkit) doesn't have its own equals method so comparing World to another World per say World.equals(anotherWorld); would only work if both are pointing to the same Object in RAM.
    Anywho, that world comparison will be moved out of there anyway because I'm going to do some world stuff higher up in the code.

    EDIT:
    But if I were you, I wouldn't worry about string comparison when your sifting through all the ports linearly every time someone moves to see whether or not they are inside a portal yet. Imagine if you have 50 portals, and 25 players online who are constantly moving.
    You generally move more than once per second, but lets say they throw one MoveEvent/second, that would make for 1250 "In-a-portal-yet?" comparisons.
     
  18. Offline

    MiHo

    This is clearly to me, and the move inside/outside messages are something important for me, so it's a must have to check that and there also are other plugins which check that.
    Like WorldGuard regions! (I'll take a look at how they check that...)

    And testing it (the old way) with my production server (~20 players and 12 portals) shows that the plugin don't slows down the server in anyway.

    I also have changed the way to check if the user is inside a TravelPort to a hopefully more efficient way. (Using time configurable time intervalls instead of the player move event.) Could be tested in the latest snapshot.
     
  19. Offline

    Plague

    @MiHo any site can go down :)
    You can have the image here (although personally I think it just wastes space) but you have to have the header in text too
     
  20. Offline

    MiHo

    Enough as header? Contains name, version and short description.
    Changed to text only header...
     
  21. Offline

    MiHo

    Released Version 1.1 with small speed boost and some other small changes. (See this Thread)
     
  22. Offline

    MiHo

    As everybody can see in git log, many new features are added to the snapshots and needed to get tested before Release 1.2.
    (But take care! Do not test at live servers ;) )
     
  23. Offline

    MiHo

    Release Version 1.2

    Please update the translations too!

    New Feature: Time Controlled Departure
    (Everything is of course ingame time!)

    Let it depart with intervalls, like this commands:
    /port depart every 3m
    /port depart every 1h 30m
    /port depart every 1d 12h

    Or let it depart at exact times:
    /port depart 12:00, 13:00, 14:15

    Or the default way to depart:
    /port depart manual
     
  24. Offline

    MiHo

    Works with CraftBukkit 818 and Minecraft 1.6.6
     
  25. Offline

    Parsiuk

    Ok, but how to use it? I mean: there is no guide or examples. I see file "ports.csv" so I assume I list my portals there. But what format do I use?
     
  26. Offline

    MiHo

    Read first post or use /port help ingame.
     
  27. Offline

    Parsiuk

    Works perfectly! Thank you very much. It's a very good plugin.

    There is one small issue: money for a ticket doesn't go anywhere. They are just removed. Can I specify to which account/player the money should be transferred? I see that I can set a owner of the portal: can we transfer money to the owner after someone uses the portal?
     
  28. Offline

    MiHo

    Don't implemented yet, but I will implement the idea in next version.

    Implemented your idea (but currently not tested enough). If you want, you could test, latest snapshot.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 14, 2016
  29. Offline

    Korlinni

    Does this have a limit with how far away ports can be?Because I believe I reached that limit.
     
  30. Offline

    MiHo

    No, there isn't any limit and multiworld support is also available.
     

Share This Page