create account

Minecolonies & Core-Rework-Refactoring-Madness #2 by raycoms

View this thread on: hive.blogpeakd.comecency.com
· @raycoms · (edited)
$127.48
Minecolonies & Core-Rework-Refactoring-Madness #2
Hey everyone,

Do you remember the last time OCD got me hard [here](https://steemit.com/utopian-io/@raycoms/minecolonies-and-core-rework-refactoring-madness) and I had to rework significant parts of our code?
It's worse this time!

But let me start from the beginning.

These days I went to our official server (which you can get with this mod pack: [here](https://minecraft.curseforge.com/projects/minecolonies-testpack)) and I noticed a lot of lag, so I started to run some tools to find out which might be causing this.
First I found the typical problems, too many entities like fishes, and because of certain mods, doors and trapdoors were using significant parts of the server performance.
But, besides that general overhead lag, we also had terrible lag spikes now and then. 
Therefore, I ran a lag spike profiler as well.
Within a few minutes, it told me that there is a certain overhead where we store our colonies to NBT.
I investigate this and I found that with every single change within each of our colonies, we write ALL the colonies to NBT (to hard disk). And who knows IO also knows that this is an obvious bottleneck.
Therefore, I knew I had to do the following two things:

a) Changes to the colony write the colony dirty and after a few seconds, it writes the colony manager dirty so it can write it to disk (No need to do that every second, on average every 5 seconds works perfectly).

At a ton of places:

![](https://i.imgur.com/wGRPYhe.png)

b) Cache the stream of the colonies which didn't have any changes so we don't have to write those to disk as well (Our main bottleneck is CPU, not RAM).

![](https://i.imgur.com/5aSxA2b.png)

Which at the same time allowed me to decrease the size of the code of the colony saving code:

![](https://i.imgur.com/wbqkkCZ.png)



Besides that, I had analogous to the previous refactoring I extracted the package management of the colony to a dedicated package manager.

![](https://i.imgur.com/Cj5lcrM.png)

This way I was able to reduce the size of colony.java to around 1100 (including the additional caching) which is now a perfect file size to work with.


But these are very significant changes in the colony code and that's why I also write some unit tests to make sure things are still in place after this update.

Therefore, I tested if the colony tags are correctly updated after the colony changed:

![](https://i.imgur.com/vB25aJJ.png)


Besides that I am planning to do the following:

In the future, I want to decentralize the colonies from the colony manager and store them independently to disk.
This way we'll only have to store the colonies to disk which really changed and we'll be able to recover independent colonies of users more easily as well.


I hope you liked my next refactor madness, I'm sure another day it will hit me again and it won't stop until I refactored enough and posted about it.

<br /><hr/><em>Posted on <a href="https://utopian.io/utopian-io/@raycoms/minecolonies-and-core-rework-refactoring-madness-2">Utopian.io -  Rewarding Open Source Contributors</a></em><hr/>
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
properties (23)
authorraycoms
permlinkminecolonies-and-core-rework-refactoring-madness-2
categoryutopian-io
json_metadata"{"community":"utopian","app":"utopian/1.0.0","format":"markdown","repository":{"id":65616760,"name":"minecolonies","full_name":"Minecolonies/minecolonies","owner":{"login":"Minecolonies","id":5167336,"avatar_url":"https://avatars3.githubusercontent.com/u/5167336?v=4","gravatar_id":"","url":"https://api.github.com/users/Minecolonies","html_url":"https://github.com/Minecolonies","followers_url":"https://api.github.com/users/Minecolonies/followers","following_url":"https://api.github.com/users/Minecolonies/following{/other_user}","gists_url":"https://api.github.com/users/Minecolonies/gists{/gist_id}","starred_url":"https://api.github.com/users/Minecolonies/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Minecolonies/subscriptions","organizations_url":"https://api.github.com/users/Minecolonies/orgs","repos_url":"https://api.github.com/users/Minecolonies/repos","events_url":"https://api.github.com/users/Minecolonies/events{/privacy}","received_events_url":"https://api.github.com/users/Minecolonies/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Minecolonies/minecolonies","description":"Minecolonies minecraft mod","fork":false,"url":"https://api.github.com/repos/Minecolonies/minecolonies","forks_url":"https://api.github.com/repos/Minecolonies/minecolonies/forks","keys_url":"https://api.github.com/repos/Minecolonies/minecolonies/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Minecolonies/minecolonies/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Minecolonies/minecolonies/teams","hooks_url":"https://api.github.com/repos/Minecolonies/minecolonies/hooks","issue_events_url":"https://api.github.com/repos/Minecolonies/minecolonies/issues/events{/number}","events_url":"https://api.github.com/repos/Minecolonies/minecolonies/events","assignees_url":"https://api.github.com/repos/Minecolonies/minecolonies/assignees{/user}","branches_url":"https://api.github.com/repos/Minecolonies/minecolonies/branches{/branch}","tags_url":"https://api.github.com/repos/Minecolonies/minecolonies/tags","blobs_url":"https://api.github.com/repos/Minecolonies/minecolonies/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Minecolonies/minecolonies/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Minecolonies/minecolonies/git/refs{/sha}","trees_url":"https://api.github.com/repos/Minecolonies/minecolonies/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Minecolonies/minecolonies/statuses/{sha}","languages_url":"https://api.github.com/repos/Minecolonies/minecolonies/languages","stargazers_url":"https://api.github.com/repos/Minecolonies/minecolonies/stargazers","contributors_url":"https://api.github.com/repos/Minecolonies/minecolonies/contributors","subscribers_url":"https://api.github.com/repos/Minecolonies/minecolonies/subscribers","subscription_url":"https://api.github.com/repos/Minecolonies/minecolonies/subscription","commits_url":"https://api.github.com/repos/Minecolonies/minecolonies/commits{/sha}","git_commits_url":"https://api.github.com/repos/Minecolonies/minecolonies/git/commits{/sha}","comments_url":"https://api.github.com/repos/Minecolonies/minecolonies/comments{/number}","issue_comment_url":"https://api.github.com/repos/Minecolonies/minecolonies/issues/comments{/number}","contents_url":"https://api.github.com/repos/Minecolonies/minecolonies/contents/{+path}","compare_url":"https://api.github.com/repos/Minecolonies/minecolonies/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Minecolonies/minecolonies/merges","archive_url":"https://api.github.com/repos/Minecolonies/minecolonies/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Minecolonies/minecolonies/downloads","issues_url":"https://api.github.com/repos/Minecolonies/minecolonies/issues{/number}","pulls_url":"https://api.github.com/repos/Minecolonies/minecolonies/pulls{/number}","milestones_url":"https://api.github.com/repos/Minecolonies/minecolonies/milestones{/number}","notifications_url":"https://api.github.com/repos/Minecolonies/minecolonies/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Minecolonies/minecolonies/labels{/name}","releases_url":"https://api.github.com/repos/Minecolonies/minecolonies/releases{/id}","deployments_url":"https://api.github.com/repos/Minecolonies/minecolonies/deployments","created_at":"2016-08-13T12:45:38Z","updated_at":"2017-12-28T21:55:00Z","pushed_at":"2018-01-03T16:42:24Z","git_url":"git://github.com/Minecolonies/minecolonies.git","ssh_url":"git@github.com:Minecolonies/minecolonies.git","clone_url":"https://github.com/Minecolonies/minecolonies.git","svn_url":"https://github.com/Minecolonies/minecolonies","homepage":"http://minecolonies.com/","size":37674,"stargazers_count":67,"watchers_count":67,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":59,"mirror_url":null,"archived":false,"open_issues_count":134,"license":{"key":"gpl-3.0","name":"GNU General Public License v3.0","spdx_id":"GPL-3.0","url":"https://api.github.com/licenses/gpl-3.0"},"forks":59,"open_issues":134,"watchers":67,"default_branch":"version/1.12","score":81.172905},"pullRequests":[{"url":"https://api.github.com/repos/Minecolonies/minecolonies/pulls/1945","id":160597814,"html_url":"https://github.com/Minecolonies/minecolonies/pull/1945","diff_url":"https://github.com/Minecolonies/minecolonies/pull/1945.diff","patch_url":"https://github.com/Minecolonies/minecolonies/pull/1945.patch","issue_url":"https://api.github.com/repos/Minecolonies/minecolonies/issues/1945","number":1945,"state":"closed","locked":false,"title":"Feature/colony refactor","user":{"login":"Raycoms","id":6438347,"avatar_url":"https://avatars1.githubusercontent.com/u/6438347?v=4","gravatar_id":"","url":"https://api.github.com/users/Raycoms","html_url":"https://github.com/Raycoms","followers_url":"https://api.github.com/users/Raycoms/followers","following_url":"https://api.github.com/users/Raycoms/following{/other_user}","gists_url":"https://api.github.com/users/Raycoms/gists{/gist_id}","starred_url":"https://api.github.com/users/Raycoms/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Raycoms/subscriptions","organizations_url":"https://api.github.com/users/Raycoms/orgs","repos_url":"https://api.github.com/users/Raycoms/repos","events_url":"https://api.github.com/users/Raycoms/events{/privacy}","received_events_url":"https://api.github.com/users/Raycoms/received_events","type":"User","site_admin":false},"body":"This is a colony refactor to increase performance and readability.\r\n\r\nWhat it does:\r\n\r\na) It's not the task of the colonyManager to make sure the colonies are stored to NBT.\r\nThey store themselves and the colonyNanager only consults their NBTs.\r\nb) Extract the package things in Minecolonies into a new class and interface\r\nc) Fix some of @Asherslab mess ups xD\r\n\r\nReview please\r\n","created_at":"2017-12-30T19:02:01Z","updated_at":"2018-01-03T19:16:04Z","closed_at":"2018-01-03T19:16:04Z","merged_at":"2018-01-03T19:16:04Z","merge_commit_sha":"3f94f98cd352e0a485ee98283856581d443d69cb","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/Minecolonies/minecolonies/pulls/1945/commits","review_comments_url":"https://api.github.com/repos/Minecolonies/minecolonies/pulls/1945/comments","review_comment_url":"https://api.github.com/repos/Minecolonies/minecolonies/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Minecolonies/minecolonies/issues/1945/comments","statuses_url":"https://api.github.com/repos/Minecolonies/minecolonies/statuses/0ae799312d96580612a39b1d75f06ad23ff49937","head":{"label":"Minecolonies:feature/colony-refactor","ref":"feature/colony-refactor","sha":"0ae799312d96580612a39b1d75f06ad23ff49937","user":{"login":"Minecolonies","id":5167336,"avatar_url":"https://avatars3.githubusercontent.com/u/5167336?v=4","gravatar_id":"","url":"https://api.github.com/users/Minecolonies","html_url":"https://github.com/Minecolonies","followers_url":"https://api.github.com/users/Minecolonies/followers","following_url":"https://api.github.com/users/Minecolonies/following{/other_user}","gists_url":"https://api.github.com/users/Minecolonies/gists{/gist_id}","starred_url":"https://api.github.com/users/Minecolonies/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Minecolonies/subscriptions","organizations_url":"https://api.github.com/users/Minecolonies/orgs","repos_url":"https://api.github.com/users/Minecolonies/repos","events_url":"https://api.github.com/users/Minecolonies/events{/privacy}","received_events_url":"https://api.github.com/users/Minecolonies/received_events","type":"Organization","site_admin":false},"repo":{"id":65616760,"name":"minecolonies","full_name":"Minecolonies/minecolonies","owner":{"login":"Minecolonies","id":5167336,"avatar_url":"https://avatars3.githubusercontent.com/u/5167336?v=4","gravatar_id":"","url":"https://api.github.com/users/Minecolonies","html_url":"https://github.com/Minecolonies","followers_url":"https://api.github.com/users/Minecolonies/followers","following_url":"https://api.github.com/users/Minecolonies/following{/other_user}","gists_url":"https://api.github.com/users/Minecolonies/gists{/gist_id}","starred_url":"https://api.github.com/users/Minecolonies/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Minecolonies/subscriptions","organizations_url":"https://api.github.com/users/Minecolonies/orgs","repos_url":"https://api.github.com/users/Minecolonies/repos","events_url":"https://api.github.com/users/Minecolonies/events{/privacy}","received_events_url":"https://api.github.com/users/Minecolonies/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Minecolonies/minecolonies","description":"Minecolonies minecraft mod","fork":false,"url":"https://api.github.com/repos/Minecolonies/minecolonies","forks_url":"https://api.github.com/repos/Minecolonies/minecolonies/forks","keys_url":"https://api.github.com/repos/Minecolonies/minecolonies/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Minecolonies/minecolonies/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Minecolonies/minecolonies/teams","hooks_url":"https://api.github.com/repos/Minecolonies/minecolonies/hooks","issue_events_url":"https://api.github.com/repos/Minecolonies/minecolonies/issues/events{/number}","events_url":"https://api.github.com/repos/Minecolonies/minecolonies/events","assignees_url":"https://api.github.com/repos/Minecolonies/minecolonies/assignees{/user}","branches_url":"https://api.github.com/repos/Minecolonies/minecolonies/branches{/branch}","tags_url":"https://api.github.com/repos/Minecolonies/minecolonies/tags","blobs_url":"https://api.github.com/repos/Minecolonies/minecolonies/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Minecolonies/minecolonies/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Minecolonies/minecolonies/git/refs{/sha}","trees_url":"https://api.github.com/repos/Minecolonies/minecolonies/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Minecolonies/minecolonies/statuses/{sha}","languages_url":"https://api.github.com/repos/Minecolonies/minecolonies/languages","stargazers_url":"https://api.github.com/repos/Minecolonies/minecolonies/stargazers","contributors_url":"https://api.github.com/repos/Minecolonies/minecolonies/contributors","subscribers_url":"https://api.github.com/repos/Minecolonies/minecolonies/subscribers","subscription_url":"https://api.github.com/repos/Minecolonies/minecolonies/subscription","commits_url":"https://api.github.com/repos/Minecolonies/minecolonies/commits{/sha}","git_commits_url":"https://api.github.com/repos/Minecolonies/minecolonies/git/commits{/sha}","comments_url":"https://api.github.com/repos/Minecolonies/minecolonies/comments{/number}","issue_comment_url":"https://api.github.com/repos/Minecolonies/minecolonies/issues/comments{/number}","contents_url":"https://api.github.com/repos/Minecolonies/minecolonies/contents/{+path}","compare_url":"https://api.github.com/repos/Minecolonies/minecolonies/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Minecolonies/minecolonies/merges","archive_url":"https://api.github.com/repos/Minecolonies/minecolonies/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Minecolonies/minecolonies/downloads","issues_url":"https://api.github.com/repos/Minecolonies/minecolonies/issues{/number}","pulls_url":"https://api.github.com/repos/Minecolonies/minecolonies/pulls{/number}","milestones_url":"https://api.github.com/repos/Minecolonies/minecolonies/milestones{/number}","notifications_url":"https://api.github.com/repos/Minecolonies/minecolonies/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Minecolonies/minecolonies/labels{/name}","releases_url":"https://api.github.com/repos/Minecolonies/minecolonies/releases{/id}","deployments_url":"https://api.github.com/repos/Minecolonies/minecolonies/deployments","created_at":"2016-08-13T12:45:38Z","updated_at":"2017-12-28T21:55:00Z","pushed_at":"2018-01-03T19:16:04Z","git_url":"git://github.com/Minecolonies/minecolonies.git","ssh_url":"git@github.com:Minecolonies/minecolonies.git","clone_url":"https://github.com/Minecolonies/minecolonies.git","svn_url":"https://github.com/Minecolonies/minecolonies","homepage":"http://minecolonies.com/","size":37695,"stargazers_count":67,"watchers_count":67,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":59,"mirror_url":null,"archived":false,"open_issues_count":133,"license":{"key":"gpl-3.0","name":"GNU General Public License v3.0","spdx_id":"GPL-3.0","url":"https://api.github.com/licenses/gpl-3.0"},"forks":59,"open_issues":133,"watchers":67,"default_branch":"version/1.12"}},"base":{"label":"Minecolonies:version/1.12","ref":"version/1.12","sha":"864cf6f27c57ffb3fc076f411f00ec3d0a243319","user":{"login":"Minecolonies","id":5167336,"avatar_url":"https://avatars3.githubusercontent.com/u/5167336?v=4","gravatar_id":"","url":"https://api.github.com/users/Minecolonies","html_url":"https://github.com/Minecolonies","followers_url":"https://api.github.com/users/Minecolonies/followers","following_url":"https://api.github.com/users/Minecolonies/following{/other_user}","gists_url":"https://api.github.com/users/Minecolonies/gists{/gist_id}","starred_url":"https://api.github.com/users/Minecolonies/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Minecolonies/subscriptions","organizations_url":"https://api.github.com/users/Minecolonies/orgs","repos_url":"https://api.github.com/users/Minecolonies/repos","events_url":"https://api.github.com/users/Minecolonies/events{/privacy}","received_events_url":"https://api.github.com/users/Minecolonies/received_events","type":"Organization","site_admin":false},"repo":{"id":65616760,"name":"minecolonies","full_name":"Minecolonies/minecolonies","owner":{"login":"Minecolonies","id":5167336,"avatar_url":"https://avatars3.githubusercontent.com/u/5167336?v=4","gravatar_id":"","url":"https://api.github.com/users/Minecolonies","html_url":"https://github.com/Minecolonies","followers_url":"https://api.github.com/users/Minecolonies/followers","following_url":"https://api.github.com/users/Minecolonies/following{/other_user}","gists_url":"https://api.github.com/users/Minecolonies/gists{/gist_id}","starred_url":"https://api.github.com/users/Minecolonies/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Minecolonies/subscriptions","organizations_url":"https://api.github.com/users/Minecolonies/orgs","repos_url":"https://api.github.com/users/Minecolonies/repos","events_url":"https://api.github.com/users/Minecolonies/events{/privacy}","received_events_url":"https://api.github.com/users/Minecolonies/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Minecolonies/minecolonies","description":"Minecolonies minecraft mod","fork":false,"url":"https://api.github.com/repos/Minecolonies/minecolonies","forks_url":"https://api.github.com/repos/Minecolonies/minecolonies/forks","keys_url":"https://api.github.com/repos/Minecolonies/minecolonies/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Minecolonies/minecolonies/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Minecolonies/minecolonies/teams","hooks_url":"https://api.github.com/repos/Minecolonies/minecolonies/hooks","issue_events_url":"https://api.github.com/repos/Minecolonies/minecolonies/issues/events{/number}","events_url":"https://api.github.com/repos/Minecolonies/minecolonies/events","assignees_url":"https://api.github.com/repos/Minecolonies/minecolonies/assignees{/user}","branches_url":"https://api.github.com/repos/Minecolonies/minecolonies/branches{/branch}","tags_url":"https://api.github.com/repos/Minecolonies/minecolonies/tags","blobs_url":"https://api.github.com/repos/Minecolonies/minecolonies/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Minecolonies/minecolonies/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Minecolonies/minecolonies/git/refs{/sha}","trees_url":"https://api.github.com/repos/Minecolonies/minecolonies/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Minecolonies/minecolonies/statuses/{sha}","languages_url":"https://api.github.com/repos/Minecolonies/minecolonies/languages","stargazers_url":"https://api.github.com/repos/Minecolonies/minecolonies/stargazers","contributors_url":"https://api.github.com/repos/Minecolonies/minecolonies/contributors","subscribers_url":"https://api.github.com/repos/Minecolonies/minecolonies/subscribers","subscription_url":"https://api.github.com/repos/Minecolonies/minecolonies/subscription","commits_url":"https://api.github.com/repos/Minecolonies/minecolonies/commits{/sha}","git_commits_url":"https://api.github.com/repos/Minecolonies/minecolonies/git/commits{/sha}","comments_url":"https://api.github.com/repos/Minecolonies/minecolonies/comments{/number}","issue_comment_url":"https://api.github.com/repos/Minecolonies/minecolonies/issues/comments{/number}","contents_url":"https://api.github.com/repos/Minecolonies/minecolonies/contents/{+path}","compare_url":"https://api.github.com/repos/Minecolonies/minecolonies/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Minecolonies/minecolonies/merges","archive_url":"https://api.github.com/repos/Minecolonies/minecolonies/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Minecolonies/minecolonies/downloads","issues_url":"https://api.github.com/repos/Minecolonies/minecolonies/issues{/number}","pulls_url":"https://api.github.com/repos/Minecolonies/minecolonies/pulls{/number}","milestones_url":"https://api.github.com/repos/Minecolonies/minecolonies/milestones{/number}","notifications_url":"https://api.github.com/repos/Minecolonies/minecolonies/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Minecolonies/minecolonies/labels{/name}","releases_url":"https://api.github.com/repos/Minecolonies/minecolonies/releases{/id}","deployments_url":"https://api.github.com/repos/Minecolonies/minecolonies/deployments","created_at":"2016-08-13T12:45:38Z","updated_at":"2017-12-28T21:55:00Z","pushed_at":"2018-01-03T19:16:04Z","git_url":"git://github.com/Minecolonies/minecolonies.git","ssh_url":"git@github.com:Minecolonies/minecolonies.git","clone_url":"https://github.com/Minecolonies/minecolonies.git","svn_url":"https://github.com/Minecolonies/minecolonies","homepage":"http://minecolonies.com/","size":37695,"stargazers_count":67,"watchers_count":67,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":59,"mirror_url":null,"archived":false,"open_issues_count":133,"license":{"key":"gpl-3.0","name":"GNU General Public License v3.0","spdx_id":"GPL-3.0","url":"https://api.github.com/licenses/gpl-3.0"},"forks":59,"open_issues":133,"watchers":67,"default_branch":"version/1.12"}},"_links":{"self":{"href":"https://api.github.com/repos/Minecolonies/minecolonies/pulls/1945"},"html":{"href":"https://github.com/Minecolonies/minecolonies/pull/1945"},"issue":{"href":"https://api.github.com/repos/Minecolonies/minecolonies/issues/1945"},"comments":{"href":"https://api.github.com/repos/Minecolonies/minecolonies/issues/1945/comments"},"review_comments":{"href":"https://api.github.com/repos/Minecolonies/minecolonies/pulls/1945/comments"},"review_comment":{"href":"https://api.github.com/repos/Minecolonies/minecolonies/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Minecolonies/minecolonies/pulls/1945/commits"},"statuses":{"href":"https://api.github.com/repos/Minecolonies/minecolonies/statuses/0ae799312d96580612a39b1d75f06ad23ff49937"}},"author_association":"CONTRIBUTOR"}],"platform":"github","type":"development","tags":["utopian-io","gaming","technology","education","programming"],"users":["raycoms"],"links":["https://steemit.com/utopian-io/@raycoms/minecolonies-and-core-rework-refactoring-madness","https://minecraft.curseforge.com/projects/minecolonies-testpack"],"moderator":{"account":"vladimir-simovic","reviewed":true,"pending":false,"flagged":false}}"
created2018-01-03 19:17:48
last_update2018-01-04 19:17:27
depth0
children4
last_payout2018-01-10 19:17:48
cashout_time1969-12-31 23:59:59
total_payout_value114.310 HBD
curator_payout_value13.174 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length3,069
author_reputation115,046,969,395,583
root_title"Minecolonies & Core-Rework-Refactoring-Madness #2"
beneficiaries
0.
accountutopian.pay
weight2,500
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id26,850,111
net_rshares14,661,767,218,283
author_curate_reward""
vote details (31)
@fatihgokay ·
Thanks . Good work
properties (22)
authorfatihgokay
permlinkre-raycoms-minecolonies-and-core-rework-refactoring-madness-2-20180103t223503767z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"}
created2018-01-03 22:35:06
last_update2018-01-03 22:35:06
depth1
children0
last_payout2018-01-10 22:35:06
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length18
author_reputation44,821,665,588
root_title"Minecolonies & Core-Rework-Refactoring-Madness #2"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id26,884,274
net_rshares0
@utopian-io ·
$0.42
### Hey @raycoms I am @utopian-io. I have just upvoted you!
#### Achievements
- You have less than 500 followers. Just gave you a gift to help you succeed!
- You are generating more rewards than average for this category. Super!;)
- Seems like you contribute quite often. AMAZING!
#### Community-Driven Witness!
I am the first and only Steem Community-Driven Witness. <a href="https://discord.gg/zTrEMqB">Participate on Discord</a>. Lets GROW TOGETHER!
- <a href="https://v2.steemconnect.com/sign/account-witness-vote?witness=utopian-io&approve=1">Vote for my Witness With SteemConnect</a>
- <a href="https://v2.steemconnect.com/sign/account-witness-proxy?proxy=utopian-io&approve=1">Proxy vote to Utopian Witness with SteemConnect</a>
- Or vote/proxy on <a href="https://steemit.com/~witnesses">Steemit Witnesses</a>

[![mooncryption-utopian-witness-gif](https://steemitimages.com/DQmYPUuQRptAqNBCQRwQjKWAqWU3zJkL3RXVUtEKVury8up/mooncryption-s-utopian-io-witness-gif.gif)](https://steemit.com/~witnesses)

**Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x**
👍  
properties (23)
authorutopian-io
permlinkre-raycoms-minecolonies-and-core-rework-refactoring-madness-2-20180104t085009518z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"}
created2018-01-04 08:50:09
last_update2018-01-04 08:50:09
depth1
children0
last_payout2018-01-11 08:50:09
cashout_time1969-12-31 23:59:59
total_payout_value0.318 HBD
curator_payout_value0.100 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length1,158
author_reputation152,955,367,999,756
root_title"Minecolonies & Core-Rework-Refactoring-Madness #2"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id26,983,799
net_rshares37,829,562,823
author_curate_reward""
vote details (1)
@vladimir-simovic ·
$3.05
Thank you for the contribution. It has been approved.

You can contact us on [Discord](https://discord.gg/UCvqCsx).
**[[utopian-moderator]](https://utopian.io/moderators)**
👍  ,
properties (23)
authorvladimir-simovic
permlinkre-raycoms-minecolonies-and-core-rework-refactoring-madness-2-20180103t220944290z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"}
created2018-01-03 22:09:48
last_update2018-01-03 22:09:48
depth1
children0
last_payout2018-01-10 22:09:48
cashout_time1969-12-31 23:59:59
total_payout_value2.294 HBD
curator_payout_value0.752 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length172
author_reputation56,930,790,558,862
root_title"Minecolonies & Core-Rework-Refactoring-Madness #2"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id26,880,047
net_rshares273,084,051,035
author_curate_reward""
vote details (2)
@zainqureshi ·
@raycoms great post
I also work on 3D games
properties (22)
authorzainqureshi
permlinkre-raycoms-minecolonies-and-core-rework-refactoring-madness-2-20180103t194747032z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"users":["raycoms"],"app":"steemit/0.1"}
created2018-01-03 19:47:51
last_update2018-01-03 19:47:51
depth1
children0
last_payout2018-01-10 19:47:51
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length43
author_reputation124,873,734,584
root_title"Minecolonies & Core-Rework-Refactoring-Madness #2"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id26,855,524
net_rshares0