[DEPRECATED] Partec DEPRECATED

Makes it possible to create new, custom, client-specific particles

  1. Eisenwave
    Contributors:
    The Arax Group
    [​IMG]
    Requires Java 8, Spigot 1.8.8 this might change in the future

    Download Source

    [​IMG]
    Partec is a Plugin/API which allows you to add new particles to the game.
    Basically, it helps you create client-side armorstands with custom movements and custom block models on their head.
    You can add new so called Partecles to the game just by using the config of the Partec plugin.
    Once you've done that, the API allows you to create highly customizable events.
    Note that this plugin is being shipped with "AraxVisuals", a small plugin which just shows you how to make use of the API.
    It is also shipped with a resource pack, so you can test out the default Partecles the way they are supposed to be shown.

    Commands:
    Partec:
    /partec list
    : list all active Partecles on the server
    /partec clear: deletes all Partecles
    /partec count: returns amount of active Partecles

    /partecle <type> <x> <y> <z> [speed=1] [viewerPlayers=none] [anchorPlayer=CommandSender]: spawns a Partecle defined in your config.
    "~" Operator may be used for relative coordinates.
    Name several players using "name,name".

    AraxVisuals:
    /axvis <effect> :
    Plays an effect


    [​IMG]

    In BETA 4 or now known as GAMMA extreme performancy adjustments were made in order to decrease server load dramatically.
    Even a thousand Partecles can be used without overly high server load.

    http://imgur.com/SXBsu8B

    This is the "stormtroopers" effect of AraxVisuals.
    It spawns 2048 stormtroopers in a 32x32 grid and makes use of a player item model, which can load any skin and may be used for a variety of effects.

    https://imgur.com/Eh0K1Nq
    This gif shows a simple example of a Flame-Partecle.
    This Partecle is actually an armor stand with a custom model on its head. What Partec does for you, is automatically making the armorstand look at you, so it appears like a standard Minecraft particle -> a 2D surface in 3D space.

    https://imgur.com/6bSD5XR
    Partec also makes it possible to use players as anchor points. So when the specified player moves, the Partecle moves with them.

    https://imgur.com/UC6xnjs
    Ever since BETA 3, it's also possible to use entities as anchor points. Moreover, if the spawned Partecle has no own movement, Partec teleports it in a more precise way which allows you to attach clothes, decorations, wings etc. to entities.

    http://imgur.com/3tPKUE8
    This is what happens when you use the setting "withanchor" for fixed Partecle angles.


    [​IMG]
    Code (config (Unknown Language)):
    partecle render distance: 50
    Code (partecle-list (Unknown Language)):
    #name:
    #  item: item material
    #  damage: item damage
    #  lifetime: lifetime in ticks
    #  movements:
    #    linear: [x, y, z]
    #    accelerated: [x, y, z]
    #    scattering: [speed]
    #    gravity: [gravity constant in m/s^2]
    #    rotating: [radius, speed, degrees]
    #    swinging: [x, y, z, speed, degrees]
    #  fixed:
    #    pitch: angle OR "false"/"default" OR "toanchor"/"atanchor" OR "withanchor"
    #    yaw: angle OR "false"/"default" OR "toanchor"/"atanchor" OR "withanchor"
    #  rotation:
    #    pitch: angle
    #    yaw: angle

    pumpkin:
      item: pumpkin
      damage: 0
      lifetime: 255
      movements:
        linear: [0, 0, 0]
        accelerated: [0, 0, 0]
        scattering: [0.05]
        gravity: [0]
        rotating: [0, 0, 0]
        swinging: [0, 0, 0, 0, 0]
      fixed:
        pitch: 0
        yaw: withanchor
      rotation:
        pitch: 0
        yaw: 0

    wings:
      item: gold_block
      damage: 0
      lifetime: 1000
      movements:
        linear: [0, 0, 0]
        accelerated: [0, 0, 0]
        scattering: [0]
        gravity: [0]
        rotating: [0, 0, 0]
        swinging: [0, 0, 0, 0, 0]
      fixed:
        pitch: 0
        yaw: withanchor
      rotation:
        pitch: 0
        yaw: 0

    wings_charizard:
      item: diamond_block
      damage: 0
      lifetime: 1000
      movements:
        linear: [0, 0, 0]
        accelerated: [0, 0, 0]
        scattering: [0]
        gravity: [0]
        rotating: [0, 0, 0]
        swinging: [0, 0, 0, 0, 0]
      fixed:
        pitch: 0
        yaw: withanchor
      rotation:
        pitch: 0
        yaw: 0

    player_axe:
      item: fence_gate
      damage: 0
      lifetime: 1000
      movements:
        linear: [0, 0, 0]
        accelerated: [0, 0, 0]
        scattering: [0]
        gravity: [0]
        rotating: [0, 0, 0]
        swinging: [0, 0, 0, 0, 0]
      fixed:
        pitch: 0
        yaw: withanchor
      rotation:
        pitch: 0
        yaw: 0

    player_stormtrooper:
      item: spruce_fence_gate
      damage: 0
      lifetime: 100
      movements:
        linear: [0, 0, 0]
        accelerated: [0, 0, 0]
        scattering: [0]
        gravity: [0]
        rotating: [0, 0, 0]
        swinging: [0, 0, 0, 0, 0]
      fixed:
        pitch: 0
        yaw: 0
      rotation:
        pitch: 0
        yaw: 0

    flame:
      item: iron_block
      damage: 0
      lifetime: 255
      movements:
        linear: [0, 0.01, 0]
        accelerated: [0, 0, 0]
        scattering: [0.08]
        gravity: [0]
        rotating: [0, 0, 0]
        swinging: [0, 0, 0, 0, 0]
      fixed:
        pitch: default
        yaw: default

    bubble:
      item: glass
      damage: 0
      lifetime: 40
      movements:
        linear: [0, 0.1, 0]
        accelerated: [0, 0, 0]
        scattering: [0.033]
        gravity: [0]
        rotating: [0, 0, 0]
        swinging: [0, 0.2, 0, 15, 180]
      fixed:
        pitch: 0
        yaw: 0

    glitter:
      item: ice
      damage: 0
      lifetime: 120
      movements:
        linear: [0, 0, 0]
        accelerated: [0, 0, 0]
        scattering: [0]
        gravity: [0]
        rotating: [0, 0, 0]
        swinging: [0, 0, 0, 0, 0]
      fixed:
        pitch: 0
        yaw: false

    protection:
      item: bedrock
      damage: 0
      lifetime: 200
      movements:
        linear: [0, 0, 0]
        accelerated: [0, 0, 0]
        scattering: [0]
        gravity: [0]
        rotating: [1.5, 3, 0]
        swinging: [0, 0.3, 0, 10, 90]
      fixed:
        pitch: 0
        yaw: atanchor
     
    item: Bukkit material; must be item of block to get displayed
    damage: damage value of item
    lifetime: ticks until removal of Partecle

    movements:
    linear: [x, y, z]

    x = movement in x-direction each tick
    y = movement in y-direction each tick
    z = movement in z-direction each tick

    scattering: [n]
    n
    = length of random vector which moves Partecle each tick

    accelerated: [x, y, z]
    x
    = acceleration in x-direction each tick (in blocks/tick = 1/400m/s)
    y = acceleration in y-direction each tick (in blocks/tick = 1/400m/s)
    z = acceleration in z-direction each tick (in blocks/tick = 1/400m/s)

    gravity: [n]
    n
    = acceleration in negative y-direction each tick (in m/s = 400blocks/tick)

    rotating: [r, s, d]
    r = radius of rotation
    s = speed of rotation in degrees/tick
    d = starting point in degrees

    swinging: [x, y, z, s, d]
    x
    = total swing into x-direction
    y = total swing into y-direction
    z = total swing into z-direction
    s = speed in degrees/tick
    d = starting point in degrees

    fixed:
    default
    = Partecle faces the viewer
    false = default
    leaving empty = default

    atanchor = Partecle faces anchor player
    toanchor = atanchor

    withanchor = Partecle adapts to anchor player orientation

    rotation:
    pitch=extra pitch, independent from fixed mode
    yaw=extra yaw, independent from fixed mode


    [​IMG]
    The API of Partec contains 2 different classes which you should make use of in other plugins.

    org.thearaxgroup.Partec.API.PartecleCreationManager
    Code (code (Unknown Language)):
    public static Partecle spawn(String type, Location loc, List<Player> viewerPlayers, Player anchorPlayer);
    public static Partecle spawn(String type, Location loc, List<Player> viewerPlayers);
    public static Partecle spawn(String type, Location loc);
    type: Partecle name defined in your partecle-list.yml

    loc: Location of Partecle

    viewerPlayers: List of players who are able to see the Partecle. If left empty, the Partecle is visible to everyone.
    default = new ArrayList<Player>();

    anchorPlayer: Player who drags the Partecle with them when moving
    default = null;
    Code (code (Unknown Language)):
    public static void startMovement(Partecle partecle, String type, float speed);
    speed = multiplier to all movements of the Partecle
    Code (code (Unknown Language)):
    public static Partecle spawnAndMove(String type, Location loc, float speed, List<Player> viewerPlayers, Player anchorPlayer)
    org.thearaxgroup.Partec.API.PartecleMovementManager
    Code (methodforstartinglinearmovements (Unknown Language)):
    //LINEAR
        public static void startMovementLinear(Partecle partecle, float x, float y, float z, byte precision) {
            if (precision == 0) {Bukkit.getLogger().info("Movement precision can not be 0"); return;}
            partecle.setPrecision(precision);
            partecle.addMovement(new float[] {0,x,y,z});
        }
    The PartecleMovementManager works very similar to the PartecleCreationManager.

    It's an abstract utility class which you can use to give Partecles a movement.
    If you spawn a Partecle and move it according to its settings in the partecle-list.yml, you won't need to use this class.


    Normally, these two abstract classes should be all you need when working with the API.


    [​IMG]
    This plugin was created by members of The Arax Group. We are a group of coders and artists who tackle a variety of projects, starting with this Head Database. We provide a high standard of quality and a unified policy for all of or paid plugins.

    More by The Arax Group:
    Head Database
    - Head Database ChestGUI linked to a regularly updated database with custom URL heads.


    [​IMG]

    [​IMG]

Recent Reviews

  1. NullBlox
    NullBlox
    5/5,
    Version: BETA 2
    Totally Mind Blowing!
    This is going to open the doors to a lot of craziness!
    Im so ready to see what spawns outta this from the community!

    GG all the way!
  2. Arcaniax
    Arcaniax
    5/5,
    Version: BETA
    Very cool and unique plugin, I hope a lot of people will use this cool plugin!
    Thanks for making this.
    ~ Arcaniax
    1. Eisenwave
      Author's Response
      Thanks a lot for your feedback.
      I appreciate it ;)
  3. TwinJian
    TwinJian
    5/5,
    Version: BETA
    OMG gosh thanks so much i was looking for something like this to help me code my plugin thanks so much!
    1. Eisenwave
      Author's Response
      What a coincidence, thanks a lot for the feedback!
      This is still a young plugin, but I promise, I'll make it great. ;D