Innectis Community Forum

Author Topic: What is the IDP update process?  (Read 6070 times)

tommykins20

  • Goldy VIP
  • Sr. Member
  • ****
  • Posts: 322
  • Hi, I'm Tommy
    • View Profile
What is the IDP update process?
« on: December 21, 2013, 05:47:01 AM »
Hia,
Every time Minecraft updates we wait for Bukkit to update then finally we update, right? Is that how it goes?
Anyway I was wondering why updating IDP takes a bit of a process.. What do you do, Joel? Don't you just update the dependency or something? (Or the 'external library jar')? So yeah I'm curious... what do you also need to do as well as just pop in the new CB?

-tommykins20
  • tommykins20
    tommykins20
    tommykins20
I love the good old OC days

Eggnaug

  • Solaire of Astora
  • Administrator
  • Legendary Member
  • *****
  • Posts: 2306
  • Gender: Male
  • Warrior of Sunlight
    • View Profile
Re: What is the IDP update process?
« Reply #1 on: December 21, 2013, 09:31:37 AM »
One of the big reasons why it took so long to update this time is because Mojang changed the netty,
  • Eggnaug
    Eggnaug
    Eggnaug
Praise the Sun!

tommykins20

  • Goldy VIP
  • Sr. Member
  • ****
  • Posts: 322
  • Hi, I'm Tommy
    • View Profile
Re: What is the IDP update process?
« Reply #2 on: December 21, 2013, 09:32:41 AM »
One of the big reasons why it took so long to update this time is because Mojang changed the netty,
The netty?
But also in general, usually when we update IDP it isn't... quick shall I say?
  • tommykins20
    tommykins20
    tommykins20
I love the good old OC days

Nosliw

  • Retired Staff
  • Rainbow Member
  • *****
  • Posts: 1722
  • Gender: Male
  • You can't hurt me, I'm a Jelly Fish..
    • View Profile
    • Uber Island
Re: What is the IDP update process?
« Reply #3 on: December 21, 2013, 03:39:27 PM »
IDP uses a custom craftbukkit, there can be conflicts here, also yes, dependencies AND new features need to be restricted. Don't want people going wild!
  • Nosliw
    Nosliw
    Nosliw
I'm here to help.. With the following exception:



@EventHandler(priority = EventPriority.LOW)
public void onPlayerJoin(PlayerJoinEvent event) {
    Player player = event.getPlayer();
    if (player.getName().equals("SGT_ADZ") {
        player.kickPlayer("Yeah... Nah!");
        return;
    }
}

mercilessdegree

  • Star
  • Sr. Member
  • *****
  • Posts: 327
  • Welcome to the world of bloody evolution.
    • View Profile
Re: What is the IDP update process?
« Reply #4 on: December 22, 2013, 01:33:56 PM »
IDP has (I'm guessing here) probably thousands of lines of code, and a ton of them will need to be edited, changed and some revamped altogether in updates depending on what's changed. Base code will need to be altered for others to work, then those others may need to be changed to support the new base etc etc. Considering how big IDP is, it updates very quickly, add in the fact that we only have 1 dev atm and a ton of servers are still on 1.6. I wouldn't be complaining.
  • mercilessdegree
    mercilessdegree
    mercilessdegree

Vector

  • Owner
  • Administrator
  • Legendary Member
  • *****
  • Posts: 2153
  • Gender: Male
  • I am the exception, not the rule
    • View Profile
    • Code Speak
Re: What is the IDP update process?
« Reply #5 on: December 24, 2013, 04:55:30 AM »
There is some slight involvement when it comes to updating IDP. I can't just slap in a CraftBukkit library from a newer version of minecraft and just recompile and all is fine. Quite a few things need to be accounted for in order for this to happen.

1. Updating Bukkit/Craftbukkit
2. Assess any changes to IDP to make
3. Update IDP


1. Updating Bukkit/CraftBukkit


The nature of the IDP project is much different than other bukkit plugin projects. Most projects will simply build against the bukkit .jar, but we build on the craftbukkit .jar which does include the bukkit one as a dependency. This allows us to be able to rely on CraftBukkit code should the bukkit version not be available, which is the case for a few reasons. The code may not be supported (will not be supported), or the proper support has not been added.

Not only do we rely on CraftBukkit, but we have actually modified part of the code if it suits a particular need. For example, we modified the player list feature (ends up being the list of names seen by pressing tab while on a minecraft server) to include three new "players" that shows how many players are on the server.

Most of the time this means that when there is a new update, our code will conflict with bukkit's, and both need to be merged together in a way that works. This has sometimes resulted in missed code, rendering a feature in minecraft broken, at least one time. However, this process can often be the longest part of the update, as it may be the most involved.


2. Assess any changes to IDP to make


Ever since the Minecraft 1.3.1 update, I felt that the time spent updating to previous versions was a bit longer than it really should be. That is why I started writing a "requirements document" way before Mojang pushes out an update for a new version. This document outlines all the changes that should be made in order to update to new versions. Without this document, I have to dig through the Minecraft wiki's changelog at update time to figure out any new changes that should be made.

A lot of the time, changes need to be made in order to complement a certain minecraft feature. I believe the Minecraft 1.6 update made it so when you log out inside of a minecart you take the minecart with you. I had to make it so this feature would only work if you were either off a lot, or on a lot you owned. That is one of the examples of complementing a minecraft feature.


3. Update IDP


This process can be a bit lengthy depending on the amount of information that needs to be acted upon collected from step 2. Sometimes step 3 is not fully complete by the time a live version is pushed. I will try to finish the update process and update accordingly if that happens. Fortunately, I get a lot of information from step 2 already done when I do update, so the process is as painless as possible.

However, we do have some sensitive code that is the result of relying upon internal code that is likely to change during a Minecraft update. The reason this code changes is due to a design policy put in place by Mojang. This code is not supported at all by Bukkit, and even then we may rely on code in CraftBukkit that is also not supported by Bukkit, but is in fact not Minecraft code itself, and merely is there to mirror a part of minecraft.



We go way beyond the distance of normal Minecraft server owners because of the development atmosphere of the IDP. It is this ability that also allows us to employ a suggestion forum because we can simply put features into the IDP from the community itself. That is a fact I absolutely love. And, as I've said a few times in the past, our atmosphere also allows us to fix some Minecraft bugs that pop up. The 1.7.2 update is a good example of that in that I fixed a bug that was fixed in Minecraft 1.7.3 (1.7.4). I've done this one time before that I can remember.

So yeah, there you have a good idea of our updating process.

IDP has (I'm guessing here) probably thousands of lines of code, and a ton of them will need to be edited, changed and some revamped altogether in updates depending on what's changed. Base code will need to be altered for others to work, then those others may need to be changed to support the new base etc etc. Considering how big IDP is, it updates very quickly, add in the fact that we only have 1 dev atm and a ton of servers are still on 1.6. I wouldn't be complaining.
At last I checked from Hretsam (few months ago, I should re-evaluate) there was around 56,000 lines of actual code in the IDP. There are also around 470 files that make the project up.
« Last Edit: December 24, 2013, 04:58:43 AM by AlphaBlend »
  • AlphaBlend
    AlphaBlend
    AlphaBlend
I like to make things. That pretty much describes the kind of person I am.