Jump to content

  • Curse Sites
Become a Premium Member! Help
Latest News Article

Feedback Wanted: Minecraft API Proposal System


  • Please log in to reply
296 replies to this topic

#1

EvilSeph
    EvilSeph

    Stone Miner

  • Curse Premium
  • Curse Premium
  • 78 posts

Posted 01 August 2012 - 08:17 AM

*
POPULAR

The following is the breakdown of the system we're looking to use to gather and handle Minecraft API changes. We're planning to employ the use of a JIRA project for proposal gathering, organisation and discussion and GitHub Pull Requests once code becomes involved (and a proposal has been accepted).

Quote

The Minecraft API proposal system is a set of guidelines developers are expected to follow if they want to contribute to the Minecraft API. A Minecraft API proposal (MAP) is a design document detailing the specifications, justification, challenges faced and need for a new addition to the Minecraft API. Every proposal submitted to the official Minecraft API JIRA Project is required to follow the provided template and to meet the following requirements.

Minecraft API Proposal Requirements:  
  • A specific, to the point, summary (JIRA ticket title) should be provided. Vague summaries like "Awesome new feature!" will result in the proposal being rejected.
  • The description of the MAP should contain detailed and justified specifications and challenges faced.
  • The appropriate labels and components should be set to help with organisation and searching of MAPs.
MAP Template and example:
Summary: Trading API

Description:
Proposed addition:
Developers should be able to make use of the trading system in the game to set up their own trading system, inventory, prices and results. The trading API should allow developers to attach the ability to trade to any container, not just villagers.

Specific features:
  • Trade recipe editing
  • Trading related events
Justification and Use Case:
A trading API would allow developers to construct a sophisticated merchant system using the chest container.

Challenges faced:
None discovered at this time.

Affects Version/s:

Component/s:

Label/s: trading

After a MAP is properly submitted, each submission has a 2 week grace period before a decision can be made about the proposal, with some exceptions. This is to allow for ample time for the Minecraft developers community to review and comment on each proposal. However, while we are busy building the API for the first time, we may opt to skip the 2 week grace period on a per proposal basis to speed up the API design and development process.

The original author of the Minecraft API Proposal is expected to present their idea in a convincing manner and garner support from other developers in order to build up a community consensus. Alongside this public vetting process, the Minecraft team will be looking over each MAP and providing input as we feel is necessary and, ultimately, deciding to accept or reject a proposal. If we find that a proposal is popular but we need to reject it for whatever reason, we will usually look into alternatives, fixes or changes to address the issues we have with the proposal.

Once a MAP is accepted, a reference implementation will be worked on and the entire development process moves over to GitHub and its Pull Request system. In order for a reference implementation to be considered, each pull request has to meet the following requirements.

Minecraft API Pull Request (MAPR) Requirements:  
  • The relevant MAP should be clearly associated and mentioned in the Pull Request title (see the template for an example of the expected format).
  • The relevant MAP should be clearly linked to so discussions about the MAP can be read over if need be.
  • Detailed information from the relevant MAP should be included in the Pull Request's description for easier managing of proposals.
  • Submitted code is expected and required to adhere to our coding guidelines.
  • A vetted MAP covering the Pull Request has to exist before a Pull Request is made.
Minecraft API Pull Request template and example:
Title: [MCAPI-1] Trading API

Description:
Associated MAP:
[MCAPI-1] http://link.to.MAP.here

Proposed addition:
Developers should be able to make use of the trading system in the game to set up their own trading system, inventory, prices and results. The trading API should allow developers to attach the ability to trade to any container, not just villagers.

Specific features:
- Trade recipe editing
- Trading related events

Justification and Use Case:
A trading API would allow developers to construct a sophisticated merchant system using the chest container.

Challenges faced:
None discovered at this time.

Thoughts and feedback on this process are greatly appreciated. We'll be constantly revising this system based on the lessons we learn from it being used and your input will help us with that immensely.

Register or log in to remove.

#2

russjr08
    russjr08

    Iron Miner

  • Curse Premium
  • Curse Premium
  • 252 posts

Posted 01 August 2012 - 08:21 AM

Sounds great!

#3

md_5
    md_5

    Carpenter

  • Curse Premium
  • Curse Premium
  • 49 posts

Posted 01 August 2012 - 08:22 AM

Seems like a good way to get things organised, personally I think google docs is a great way to organise your MAP's

#4

dcba41
    dcba41

    Carpenter

  • Members
  • 54 posts
  • Minecraft: dcba41

Posted 01 August 2012 - 08:22 AM

Nice, seems like a good, fair system; why do all the work yourselves, when most of it already out there is one shape or form.


EDIT: Woow, none of the first three people decided to announce they were "FIRST!!!!"
Posted Image

#5

benthegreat17
  • Location: Canada

Posted 01 August 2012 - 08:22 AM

Can't Wait!!!

#6

McProHosting
  • Location: Florida

Posted 01 August 2012 - 08:23 AM

View PostEvilSeph, on 01 August 2012 - 08:17 AM, said:

The following is the breakdown of the system we're looking to use to gather and handle Minecraft API changes. We're planning to employ the use of a JIRA project for proposal gathering, organisation and discussion and GitHub Pull Requests once code becomes involved (and a proposal has been accepted).



Thoughts and feedback on this process are greatly appreciated. We'll be constantly revising this system based on the lessons we learn from it being used and your input will help us with that immensely.

Looks decent, but I really think performance should be one of the key factors, the better you can get performance the more features you can end up packing in in the long run, it'll open up room to do more things.

Posted Image

I am a representative of MCProHosting LLC


#7

PxlPanda
    PxlPanda

    Tree Puncher

  • Curse Premium
  • Curse Premium
  • 13 posts

Posted 01 August 2012 - 08:33 AM

Sounds interesting. :)

#8

ThaLenis
    ThaLenis

    Tree Puncher

  • Members
  • 10 posts

Posted 01 August 2012 - 08:36 AM

i agree with md_5

#9

Iyeru
    Iyeru

    Diamond Miner

  • Members
  • 875 posts
  • Location: Madison, WI
  • Minecraft: Iyeru

Posted 01 August 2012 - 08:40 AM

View PostMcProHosting, on 01 August 2012 - 08:23 AM, said:



Looks decent, but I really think performance should be one of the key factors, the better you can get performance the more features you can end up packing in in the long run, it'll open up room to do more things.

Definitely agree with this.

Posted Image


#10

RustyDagger
  • Minecraft: RustyDagger

Posted 01 August 2012 - 08:43 AM

seems like a good way to go about the task at hand.

#11

chaseoes
    chaseoes

    Void Walker

  • Curse Premium
  • Curse Premium
  • 1508 posts
  • Location: USA
  • Minecraft: chaseoes

Posted 01 August 2012 - 08:44 AM

Sounds good - can't wait!

Posted Image

The Emeralds Minecraft Server - MC 1.7.2


#12

Xamio
    Xamio

    Obsidian Miner

  • Members
  • 1295 posts
  • Minecraft: Xamiostone

Posted 01 August 2012 - 08:45 AM

Glad to see that you Mojangstas finally getting around to doing something related the the API after all this time. How long has it been, a year?

Posted Image


#13

escortkeel

Posted 01 August 2012 - 08:49 AM

This looks great!

#14

Nouish
    Nouish

    Retired Staff

  • Retired Staff
  • 769 posts
  • Location: Norway
  • Minecraft: Nouish

Posted 01 August 2012 - 09:34 AM

Will be great to have an API available for modding. I'd be so happy to have one rather than 3-4, but I do believe it can end up being a shell for the modloaders everyone seems to be using.

- Quote my post if you want to make sure I read it -


- Mapping and Modding (rules) -

- Mods Discussion - Modification Development -


#15

QuantumBlocks

Posted 01 August 2012 - 10:24 AM

Sounds good
Quantum Blocks - Xen VPS hosting
|HDD|SSD|Xen|1Gbps connection|VPS|

#16

varradami

Posted 01 August 2012 - 12:32 PM

Seems perfectly reasonable, though I wouldn't bother inventing the terms "MAP" and "MAPR" - just call them proposals and pull requests.

Do you have an issue type called Proposal in JIRA? If not, you probably want to specify the issue type used. Also I assume you will at least have a Bug issue type. Do you want to provide some guidelines of how to write proper Bugs? Any other issue types (personally I recommend as few as possible - my experience is people will be confused)?

Do you prefer proposals come with pull requests, or at least some code examples?

View PostMcProHosting, on 01 August 2012 - 08:23 AM, said:

Looks decent, but I really think performance should be one of the key factors, the better you can get performance the more features you can end up packing in in the long run, it'll open up room to do more things.

Seems orthogonal to this discussion, which is more a "how to write a good issue description" than "how to write a good API". But certainly any proposal should consider performance.

#17

HeroCC
    HeroCC

    Zombie Killer

  • Members
  • 159 posts
  • Location: %cd%\herocc
  • Minecraft: HeroCC
  • Xbox:HeroCC

Posted 01 August 2012 - 12:46 PM

Seems like a good idea!

It will help modders make their mods and iron out bugs! (And it would be cool to look at some Minecraft code :)

Posted ImagePosted Image
Join HeroiCraft Minecraft server! Survival, Creative, SkyBlock, Games, Spleef, CTF, Hunger Games, and more!
Connect to: mc.heroicraft.net


#18

DziNeIT
    DziNeIT

    Diamond Miner

  • Curse Premium
  • Curse Premium
  • 885 posts
  • Location: Eclipse - Java
  • Minecraft: PandazNWafflez
  • Xbox:Ideal DziNe

Posted 01 August 2012 - 12:48 PM

Pull Request requirements needs to contain something about signing-off being required (in case you didn't know it makes sure they transfer ownership of the code to Mojang, if you'd done this for Bukkit you could have used Bukkit code in Minecraft-API :P).

View PostHeroCC, on 01 August 2012 - 12:46 PM, said:

Seems like a good idea!

It will help modders make their mods and iron out bugs! (And it would be cool to look at some Minecraft code Posted Image

Minecraft code is not open-source. Only the API. The API alone does not contain any implementations and if you are hoping to learn Java from it the most you will learn is formatting / structure and how to define an abstract method.

#19

Talent3
    Talent3

    Diamond Miner

  • Members
  • 856 posts

Posted 01 August 2012 - 01:10 PM

Should I start making my mod now? Or wait till 1.4. I feel like getting started now.
If my post helped you in anyway, or made you smile or share a quote of some sort, please click that cool ^ button.

#20

CainFoool
    CainFoool

    Zombie Killer

  • Curse Premium
  • Curse Premium
  • 175 posts
  • Location: Derry, Northern Ireland
  • Minecraft: ThatJavaGuy
  • Xbox:CainDotNet

Posted 01 August 2012 - 01:12 PM

Finally, some real API work is getting done.