{"push_id":868078126,"size":3,"distinct_size":1,"ref":"refs/heads/feature/goals","head":"8ad1785a14c42215c14d9ce1854348d3cbdfdcd2","before":"5729a2142e3c13ecae63e1808cf1687a6eb87202","commits":[{"sha":"491142156a7d4ba3a63079fa8af56bfbdb1d0bc2","author":{"email":"f9869a2c93dad38a06e8fb39147155331a1102ab@me.com","name":"Gabriel Harris-Rouquette"},"message":"Update licenseheader for Hostile.\n\nSigned-off-by: Gabriel Harris-Rouquette <gabizou@me.com>","distinct":false,"url":"https://api.github.com/repos/SpongePowered/SpongeAPI/commits/491142156a7d4ba3a63079fa8af56bfbdb1d0bc2"},{"sha":"8e60a29f294434e419283152c796b865afa79c22","author":{"email":"f9869a2c93dad38a06e8fb39147155331a1102ab@me.com","name":"Gabriel Harris-Rouquette"},"message":"Hostile cannot extend Agent as EnderDragon cannot extend Agent.\n\nSigned-off-by: Gabriel Harris-Rouquette <gabizou@me.com>","distinct":false,"url":"https://api.github.com/repos/SpongePowered/SpongeAPI/commits/8e60a29f294434e419283152c796b865afa79c22"},{"sha":"8ad1785a14c42215c14d9ce1854348d3cbdfdcd2","author":{"email":"becb1b07b5e7418402924748493938777e4ce438@outlook.com","name":"Chris Sanders"},"message":"Phase 1 AI Framework - Goals. Documentation soon to follow.\n\nRename Human to Humanoid, Make Human both Humanoid and Creature.\n\nWith what may seem like an odd change is necessary because we desire to\nshare many things between Player and Human.\n\nHumans in Sponge are no different than a Skeleton, Zombie, etc...they are\njust \"Creature\"s. As a Creature, I can easily give them AI in a plugin\nwhich means the obvious choice would be Human IS-A Creature. This presents\nproblems because Player would then be capable of AI and while that seems\nsilly...if the AI allows it, someone will attempt it and this would fail\nepically.\n\nSimple fix is a common interface between Human and Player and keep AI to\nHuman for Humanoid types.\n\nLastly, add the ability to remove tasks.\n\nAdd BoundAITasks/AIBuilders for when a task has a known Owner.\n\nBoundAITasks are tasks in-which we, for sure, know the owner because the\ntask is being created. This is a difference from AbstractAITask where, due\nto it being wrapped in the impl, we don't know the owner until it being\nadded.\n\nAIBuilders are used to allow the API to create Vanilla AI objects to\nattach to entities. Currently, I've provided a builder for the WanderAI so\nthat we can see how this will work.\n\nNeed to return a List of AITasks.\n\nIts entirely possible to have more than one instance of an AITask on a\nsingle entity. We support this mechanic as well.\n\nMake the owner of the AITask a core concept.\n\nFinish up most of core AI structure.\n\nI've brought back Goals as each Minecraft entity has one Goal with\nsometimes having two (namely Monsters).\n\nUpdated javadocs on everything.\n\nSome feedback from @Aaron1011.\n\nPlace generic on type to enforce task, type, and goal all have the same\nagent type.\n\nSome doc corrections.\n\nReverse requiring Owner on type.\n\nWhile it seems to be the most sensible solution as it allows us to do\ncompile-time verification that the owner class on the type matches the\nAbstractAITask's owner, the problem it presents is the fact that getting\nit from the GameRegistry becomes a double-casting type erasure funfest.\nThe changes made fixes this at the cost of runtime verification.\n\nAlso, due to fullwall's feedback, I've removed mutexes. Now, there is a\nmethod to determine conconcurrency.\n\nSigned-off-by: Chris Sanders <zidane@outlook.com>","distinct":true,"url":"https://api.github.com/repos/SpongePowered/SpongeAPI/commits/8ad1785a14c42215c14d9ce1854348d3cbdfdcd2"}]}