• Welcome to skUnity!

    Welcome to skUnity! This is a forum where members of the Skript community can communicate and interact. Skript Resource Creators can post their Resources for all to see and use.

    If you haven't done so already, feel free to join our official Discord server to expand your level of interaction with the comminuty!

    Now, what are you waiting for? Join the community now!

Supported Minecraft Versions
  1. 1.9
  2. 1.10
  3. 1.11
  4. 1.12
SkEdit.jpgDonate
What is SkEdit?
SkEdit is a API that allows you to mainly fill and paste in structures. it is not created to copy Worledit, nor to compete with it. The fill and pasting is based on a sort of Async system, so it wont crash your server

Know: this was made on Dev36 and might not work on newer/older versions, its known to not work propperly on 2.3.6


Commands:
  • /ske (ske.admin)
  • /skedit (ske.admin)


Features:
  • [✓] Copy and paste system
  • [✓] Fill system
  • [✓] Schematic system
  • [✓] Skript only (no other addons required)
  • [✓] Small command system [/ske]
  • [✓] Gui System
  • [✓] Api
  • [✓] Improve the return so its more usefull
  • [✓] use block id and skript alias for block fill
  • [✓] Semi async block placing and copying

API:
Code:
Return V2:
   Usage: set {_R} to Ske("Function", {_Objects})
    Note:
        This function is NOT for beginners, it has complex code that can be hard to use. you might need to look into SkEdit on how to use a function propperly.

    Example: (command: /ske fill)

        # Defining the objects
        add skePos(1, player) to {_Obj::*}
        add skePos(2, player) to {_Obj::*}
        add arg 2 to {_Obj::*}
        set {_R} to ske("Fill", {_Obj::*}) # Executing the function with a triggered smart object

        # Checking if there is a problem with the objects, if there is. it will return a string, else a integer that is the "SkID"
        if {_R} parsed as a integer is a integer:

            set {_B::*} to skIDGetstate({_R} parsed as a integer) # To get the current SkID return variables
            message "&8[&4SkEdit&8] &fFilling blocks..."
            message "&8[&4SkEdit&8] &fTotal blocks: &c%{_B::2}%"
            message "&8[&4SkEdit&8] &fEstimated time: &c%(Rounded ({_B::2}/{ske::speed::paste::Blocks}*{ske::speed::paste::MaxDelay}*100))/30% seconds"

            #Starting the loop, and checking if its done
            set {_Now} to now
            while {_B::1} = false:
                wait skeDelay("paste") #To delay so it matches the delay of the (in this case, paste) max delay
                if difference between now and {_Now} is more than 1 second:
                    message "&8[&4SkEdit&8] &fProgress: &c%{_B::2}% &fBPC, &c%{_B::3}%&f Cycles, &c%{_B::4}% &fBlocks left"
                    set {_Now} to now
                set {_B::*} to skIDGetstate({_R} parsed as a integer) #Again, to get the curren SkID variable

            # when its done
            message "&8[&4SkEdit&8] &fSuccesfully pasted &c%{_B::2}% &fBlocks, in &c%{_B::3}% &fCycles"
            message "&8[&4SkEdit&8] &fTotal time: &c%{_B::4}%"

        #Something went wrong.
        else:
            message "&8[&4SkEdit&8] &fFailed pasting due to: &c%{_R}%"
To use with the "SKE" function, please note the name of the function, (PlayerCopy, SaveSchem, Fill, etc). also, not all the functions are supportet! only the block copy and paste ones!
Code:
Players only:
    GiveWand:
        Syntax:    skeGivewand(player)
        Example: skeGivewand(player)
        Notes:
            Gives the SkEdit wand

    GetPosition:
        Syntax: skePos(position, player)
        Example: set {_Pos} skePos(1, player)
        Returns:
            - postion x of player's selection
            - Nothing, invalid position
        Notes:
            Gives the first or second position, can only be 1 and 2

    PlayerCopy:
        Syntax: skePCopy(Location 1, Location 2, player)
        Example: set {_R} to skePCopy(skePos(1, player), skePos(2, player), player)
        Returns:
            - Nothing (Everything went well)
            - Location x not set
            - Player not found
            - Different worlds of positions
        Notes:
            Copies block, its slower than pasting or filling

    PlayerPaste:
        Syntax: skePPaste(player)
        Example: set {_R} to skePPaste(player)
        Returns:
            - Nothing (Everything went well)
            - Clipboard empty
            - Player not found
        Notes:
            Pasts the clipboard of the player

    PlayerSaveSchem:
        Syntax: skePSaveSchem(location 1, location 2, "new Schematic", player)
        Example: set {_R} to skePSaveSchem(skePos(1, player), skePos(2, player), arg 3, player)
        Returns:
            - Nothing (Everything went well)
            - Location x not set
            - Different worlds of positions
            - Schematic already exists
            - Player isnt online
        Notes:
            Saves a schematic relative to the player

    PlayerLoadSchem:
        Syntax: skePLoadSchem("Schematic", player)
        Example: set {_R} to skePLoadSchem(arg 3, player)
        Returns:
            - Schematic does not exist
            - Nothing (Everything went well)
        Notes:
            Loads the schematic to the player's clipboard


Global:
    Fill:
        Syntax:    skeFill(Location 1, Location 2, Blocks)
        Example: set {_R} to skeFill(skePos(1, player), skePos(2, player), "Sand||stone||dirt")
        Returns:
            - Nothing (Everything went well)
            - Location x not set
            - World are different
        Notes:
            - Doesnt check if the block is valid or not
            - There can be multiple blocks, seperatet at "||" example: "Red wool||White wool||Orange wool"

    SaveSchem:
        Syntax: skeSaveSchem(Location 1, Location 2, "new schematic")
        Example: set {_R} to skeSaveSchem({_Loc1}, {_Loc2}, "Tower_Tier_1")
        Returns:
            - Nothing (Everything went well)
            - Position x not set
            - Different worlds
            - Schematic already exist
        Notes:
            Saves the schematic relative to location 1

    PasteSchem:
        Syntax: skeSchemPaste(Center location, world, "schematic")
        Example: set {_R} to skeSchemPaste(location of player, world of player, arg 3)
        Returns:
            - Nothing (Everything went well)
            - Center not set
            - Schematic doesnt exists
            - World does not exist
        Notes:
            Pastes from where the schematic has been created

    ShowSchems:
        Syntax: skeShowSchems()
        Example: set {_list::*} to skeShowSchems()
        Returns:
            - List of all schems
            - No schematic set (No schematics exist)

    DeleteSchem:
        Syntax: skeDeleteSchem("schematic")
        Example: set {_R} to skeDeleteSchem("Lol")
        Returns:
            - Nothing (All went succesful)
            - Invalid schematic (Schematic doesnt exist)

    Random:
        Syntax: Random(Min, Max{, Times}) #in {} is unnceseary and defaulted to 5
        Example: set {_RandomVariable} to Random(5, 100)
        Returns:
            - Number

Addons:
- SkQuery-lime 3.6.4
- Skellett

- SkRayFall (for sound)
Author
Jeroeno_Boy
Downloads
2,291
Views
2,291
First release
Last update
Rating
4.33 star(s) 3 ratings

Latest updates

  1. Hotfix

    Fixed that you now can use spaces in command "/ske fill"
  2. Full release

    SkEdit finally released, why did it take so long for this simple update? 1. i have been working...
  3. Fix (BETA 4 Patch 1)

    Fixed small bug with randomizer

Latest reviews

1. Block data isn't working very well.
2. Performance is not great, still takes a lot of time to do stuff.
3. `/skedit fill` doesn't take spaces in the block input.
Overall, it does what it's supposed to do, but it isn't great.
Jeroeno_Boy
Jeroeno_Boy
1. Block data works good, just not on 2.3.6 which i state in the description (and maybe some under 2.3.6 but dont know which ones)

2. cant rly make it faster bcs of skript

3. il be fixing that asap
Although I do not usually play or program in Skript 1.9, I gave myself the time to download the version of Skript for Spigot 1.9 and try this API, and I can tell you that it works perfectly.
Jeroeno_Boy
Jeroeno_Boy
Thanks for the awsome revieuw :D
This was very good at loading in massive edits and it didn't crash my server!
Jeroeno_Boy
Jeroeno_Boy
Thanks for the revieuw :D