[API] Volumetric - Now with Gravity Lift Volumes!

Discussion in 'WIP and Development Status' started by loganwm, Jul 18, 2011.

Thread Status:
Not open for further replies.
  1. Offline

    loganwm

    Volumetric is an API that I'm working on in an attempt to emulate the Unreal Development Kit's volume features within Minecraft and make region-based plugins a bit more friendly and efficient.

    I'll briefly explain what a volume is, then go into a few examples.

    What is a Volume?
    A volume is a defined region of gamespace that has mutators applied to modify behavior within the volume. UDK supports volumes for almost everything including post-process filters, portals, alternate physics zones, and event-based programming.

    Currently, the supported volume shapes are as follows:
    Cuboid
    Spherical
    Cylindrical

    Though, the most advanced features of the UDK's volume system would never work within the limitations of Minecraft, I'm firm in the belief that a standardized volume API would be a step in the right direction for a lot of plugins.


    Current Supported Events:
    I'm working on expanding functionality once I deem that new events can be implemented without unreasonably increased overhead.

    onPlayerEnterVolume
    onPlayerLeaveVolume
    onPlayerInsideVolume
    onBlockPlaceWithinVolume
    onBlockDestroyWithinVolume

    Potential Events:
    onEntityEnterVolume
    onEntityLeaveVolume

    Practical Applications:
    In order to demonstrate the effectiveness, efficiency, and versatility of this system, I'm currently working on designing a set of volumes using the API.

    Portal Volume: Upon entering a portal volume, a player is transported to either a defined point or another portal volume.

    Gravity Lift Volume: Players inside a volume will ascend at a definable speed.



    Mirror Volume: All block changes made in Volume A will be reflected instantly within Volume B.



    Reset Volume: All block changes within a region can be reverted either upon a triggering event or at a specified interval.

    Heal Volume: All players within a volume will be healed st a specified interval

    Protection Volume: Basic protections implementation within a defined volume.

    Purchasable Plot Volume: Basic demonstration to display how a town plugin could take advantage of volumes

    Message Volume: Players receive a message upon entering or leaving a volume.

    How Does it Work?
    I'm still working out the exact specifications for programmers adding their own custom volumes, but at the moment, you use Bukkit's facility for obtaining a plugin reference for "Volumetric" and using a method to obtain Volumetric's volume manager.

    Volumetric's volume manager centralizes serialization, storage, and retrieval of volumes and abstracts the majority of the code behind handling volumes. This should cut down on the annoyance and wastefulness of having to define cuboids with each plugin that supports region-based effects or control.

    Current Status
    At the moment, the project is very much in the proof of concept stage, but fresh code and documentation will be available on Github at: https://github.com/loganwm/Volumetric-API

    Small update:
    The first proof of concept revision of the code is online at github [https://github.com/loganwm/Volumetric-API] and a video demonstrating a simple Mirror Effect applied to a volume has been uploaded to youtube.



    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 17, 2016
    jtripled likes this.
  2. Offline

    DrBowe

    Wow, the mirrored effect is...rather interesting, really.
    Nice work on this, it's looking great so far.
     
  3. Offline

    jonDatz

    This looks awesome, especially the mirror effects. Following this for sure
     
  4. Offline

    jeffadkins51

    Yeah i got to see this first hand, It's truly incredible. Hope to see a release soon =]
     
  5. Offline

    loganwm

    Update:
    + Routine events have been implemented through the onPlayerInsideVolume event.
    + The VolumeCraft project has been started as a test application to demonstrate the proper usage and capabilities of the Volumetric API
    * Plugins hooking into Volumetric will be responsible to applying and removing effects. Volumetric's volume manager will solely provide the API for executing them and creating or removing the volumes themselves.


    Treat for the day: Gravity lift volumes!

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

    dak393

    Wow can't believe you are doing this AND Apocalypse craft! Gravity lift looks awesome too :D
     
  7. Offline

    Shamebot

    Did you use a repeatingTask for the gravity lift?
     
  8. Offline

    loganwm

    The Volume Manager currently creates a repeating task for each volume which handles the repeating events for players inside the volume.

    The repeating task calls the each Volume Effect's onPlayerWithinVolumeEvent with an event type that gives a bit of information including time since last firing.
     
  9. The gravity lift is awesome! :)
     
  10. Offline

    PopoGenie

    in order for this too work would it have to be a client mod or is it a just a regular plugin?
     
  11. Offline

    Specops343

    Why are your projects so full of awesome?
     
  12. Offline

    loganwm

    It's entirely serverside. Gravity lifts might hit a small snag with laggy players (since they don't receive boosts at the right intervals,) but that can be counteracted by increasing the boost strength and cancelling impact damage.
     
  13. Offline

    PopoGenie

    Man this will work great with Apocalypse craft. I already have a whole idea planned when these plugins come out. Great job keep up the good work!
     
Thread Status:
Not open for further replies.

Share This Page