create account

Minecolonies & WorkOrder Rework by raycoms

View this thread on: hive.blogpeakd.comecency.com
· @raycoms · (edited)
$237.74
Minecolonies & WorkOrder Rework
![](https://i.imgur.com/arrgO7E.png)

Hey everyone, in my last post [here](https://steemit.com/utopian-io/@raycoms/minecolonies-and-moving-buildings) I added the ability to move certain buildings.

While this is a great feature it has some missing pieces to it.
Mainly: The builder will rebuild the building at another place but will leave the old structure in place.

Therefore, it would be better to tell the builder to deconstruct the old building first and then reconstruct it at the new location/rotation.

For this, I had to adapt two central parts of our code.

First of all, I had to add a destroy stage in the structure handling code which will destroy the structure independently of the world block at that location.

Second, I had to adapt our workOrder handling to accept these kind of requests.

> WorkOrders are requests for structure manipulation which are handled by the colony and can be assigned to certainw orkers.

I'll break this down into 3 main tasks:

- Additional WorkOrders
- Destroy Stage
- Refactoring

Additional WorkOrders:
---

First of all, I created a bunch of new WorkOrders for the more specific cases.

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

I created 3 new types of orders.

- One for removal
- One for building
- One for the miner (will be explained in step 3)

In Object Oriented Programming it is considered bad style to create instances of super classes. 
An example would be, we have animal classes like "Lion" or "Dog" of which we can create objects, but it would be weird to create an object of "Animal" which is too generic.
That's why I also created an explicit Build workorder.

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

The workOrder to destroy a building is called "WorkOrderBuildRemoval".
This means, the order is never cleared (it has to clear the building always) and it is always valid (even if the building doesn't exist anymore).
It receives the building details and level details of the building it is supposed to clear.

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

The next one is the explicit building order which is only a clone of the super class.

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

The last one is a miner workOrder. Its orders are handled like decoration but require the building of the miner as an additional parameter.

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

Last but not least I created an utility method in the WorkManager to be able to query orders of specific types.

To be able to do that I created a generic "W" which the method receives and which it uses to check the instance and to cast the object it will return.
Then I create a stream of all orders and filter them. 
In this case, we only want unassigned orders which are of the certain type.
Last but not least we sort the list by priority.

Destroy Stage:
---

The destroy stage is a quite simple part.
For this to work I have to add code at a few different locations.

- In the Structure AI class
- In the Structure class
- In the Builder class

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

For that, I had to add a new AIStage to our stages file and
then I had to add an additional target in the structure AI class to connect it.

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

I connected it directly with the clear step since the clear step already removes any block it finds. How exactly this will work I'll explain a bit later on.

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

In the next step, I added the removal step also in the switching stage method so the structure stage gets added correctly.

As you can see we store the stage in the AI and in the structure.
We do this since the AI stages do not persist, they are temporary. Therefore, when the worker has to restart the structure he is working on will remember the stage it was in.


```
if (isAlreadyCleared() || (!currentStructure.getStage().equals(Structure.Stage.CLEAR) && !currentStructure.getStage().equals(Structure.Stage.REMOVE)))
{
    return true;
}
```

Additionally, I had to a way to make sure that if the structure stage is removal we never pull over the removal step.


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

In the next step, I added to the builder that he does not automatically stop constructing if the order has no building since it might be a removal request.


```
public AIState switchStage(final AIState state)
{
     if (job.getWorkOrder() instanceof WorkOrderBuildRemoval && state.equals(BUILDING_STEP))
          {
             return COMPLETE_BUILD;
          }
         return super.switchStage(state);
}
```

Then, I overrode the switch stage method so he always completes the order after the removal request and does not start constructing yet.


Then, inside the Structure code, I had to add some additional code.

![](https://i.imgur.com/xEGcbQu.png)
First of all, I added the new stage to the structure.


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

And then I created the method which will iterate through the blocks.
The clear stage will compare the world block with the structure block and only clear blocks which are not equal to the structure.
The removal step will want to remove all blocks which aren't air.
This way we're able to reuse the clearing code just giving it a different input

And last but not least, on the creation of a build request after moving a building we first create a removal order and then the actual order.

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

While debugging this I found a fix for our duplicated workers:

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

On recall, we now check if the citizen really exists in the world and if not we assign the correct worker to it and do not duplicate one by creating a new one with the same abilities.


Refactoring:
---

Now, to get all of the above to work correctly I had to rework the workOrder code quite strongly.

First of all, I enabled the miner to use workOrders as well, this way he will now work stateful in his mines and will remember what shaft he was working on.
Additionally, he will know which structure he is actually working on which enables him to request the full amount of materials for each structure.

For this, to work I extracted the order code of the builder building, job and AI into generic AI, building and job classes.

Therefore I called the AI class:

`public abstract class AbstractEntityAIStructureWithWorkOrder<J extends AbstractJobStructure> extends AbstractEntityAIStructure<J>`

The job:

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


and the building:

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


And moved their code out of the builder specific classes in the abstract classes.
After that, I had to change the builder and miner classes to extend these specific classes.

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

Not to forget the window class to be able to serialize the data over to the client for the all potentially using workers as well.


In the next step, due to these additional work orders, I moved the assignment code from the colony assigning the workers to orders to each worker assigning a order to himself.
This will allow us in the future to let a player decide individually on each worker which tasks he want to allow the worker to assign to itself.

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

For that, I created this abstract method in the building class.

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

Which, first of all, the miner will implement and assign all work orders which are connected to his building to himself.

And in the next step the builder.

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

The builder will get all building and removal as well as decoration orders.
And then compare its distance to other workers in the colony.
If he detects that another builder which is able to do the job is unoccupied and closer to the building site, he will deny to accept it (since the other builder will probably accept it in a few seconds).

This also means that one builder can work on the removal job while the other starts to reconstruct the building.

This third step was a lot of work since I had to move a lot of code around and adapt a lot of code at a bunch of locations to make sure the integration will work for the new workers as well as for the old ones.



I hope you liked our new update. This fixes a whole bunch of problems we had with the miner since he forgot what he is working on and didn't know how many he needed of each material as well as it allows the players to move buildings without having to deconstruct the old building manually.






<br /><hr/><em>Posted on <a href="https://utopian.io/utopian-io/@raycoms/minecolonies-and-workorder-rework">Utopian.io -  Rewarding Open Source Contributors</a></em><hr/>
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 128 others
properties (23)
authorraycoms
permlinkminecolonies-and-workorder-rework
categoryutopian-io
json_metadata"{"community":"utopian","app":"utopian/1.0.0","format":"markdown","repository":{"id":65616760,"name":"minecolonies","full_name":"Minecolonies/minecolonies","html_url":"https://github.com/Minecolonies/minecolonies","fork":false,"owner":{"login":"Minecolonies"}},"pullRequests":[{"url":"https://api.github.com/repos/Minecolonies/minecolonies/pulls/2375","id":181622892,"html_url":"https://github.com/Minecolonies/minecolonies/pull/2375","diff_url":"https://github.com/Minecolonies/minecolonies/pull/2375.diff","patch_url":"https://github.com/Minecolonies/minecolonies/pull/2375.patch","issue_url":"https://api.github.com/repos/Minecolonies/minecolonies/issues/2375","number":2375,"state":"closed","locked":false,"title":"Feature/move buildings","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":"\r\n# Changes proposed in this pull request:\r\n- Allow to remove the building after move.\r\n- Implement workOrders and item requirement count for miners.\r\n- Abstract workOrders to separate class for entity, building and job.\r\n\r\nReview please\r\n","created_at":"2018-04-14T01:04:46Z","updated_at":"2018-04-15T03:29:41Z","closed_at":"2018-04-14T22:50:10Z","merged_at":"2018-04-14T22:50:10Z","merge_commit_sha":"3eeaa7326a9ae58f2bfd60833c13e4b09a38abc6","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/Minecolonies/minecolonies/pulls/2375/commits","review_comments_url":"https://api.github.com/repos/Minecolonies/minecolonies/pulls/2375/comments","review_comment_url":"https://api.github.com/repos/Minecolonies/minecolonies/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Minecolonies/minecolonies/issues/2375/comments","statuses_url":"https://api.github.com/repos/Minecolonies/minecolonies/statuses/b73b1279e2d0229a58c7e659ed4c7f0615cce037","head":{"label":"Minecolonies:feature/move-buildings","ref":"feature/move-buildings","sha":"b73b1279e2d0229a58c7e659ed4c7f0615cce037","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":"2018-04-15T21:24:28Z","pushed_at":"2018-04-15T21:24:27Z","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":47746,"stargazers_count":87,"watchers_count":87,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":77,"mirror_url":null,"archived":false,"open_issues_count":172,"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":77,"open_issues":172,"watchers":87,"default_branch":"version/1.12"}},"base":{"label":"Minecolonies:version/1.12","ref":"version/1.12","sha":"a701bb0ccca02a98c43206ae45f1dd636c7d4f1b","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":"2018-04-15T21:24:28Z","pushed_at":"2018-04-15T21:24:27Z","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":47746,"stargazers_count":87,"watchers_count":87,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":77,"mirror_url":null,"archived":false,"open_issues_count":172,"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":77,"open_issues":172,"watchers":87,"default_branch":"version/1.12"}},"_links":{"self":{"href":"https://api.github.com/repos/Minecolonies/minecolonies/pulls/2375"},"html":{"href":"https://github.com/Minecolonies/minecolonies/pull/2375"},"issue":{"href":"https://api.github.com/repos/Minecolonies/minecolonies/issues/2375"},"comments":{"href":"https://api.github.com/repos/Minecolonies/minecolonies/issues/2375/comments"},"review_comments":{"href":"https://api.github.com/repos/Minecolonies/minecolonies/pulls/2375/comments"},"review_comment":{"href":"https://api.github.com/repos/Minecolonies/minecolonies/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Minecolonies/minecolonies/pulls/2375/commits"},"statuses":{"href":"https://api.github.com/repos/Minecolonies/minecolonies/statuses/b73b1279e2d0229a58c7e659ed4c7f0615cce037"}},"author_association":"CONTRIBUTOR"}],"platform":"github","type":"development","tags":["utopian-io","gaming","technology","programming","education"],"users":["raycoms"],"links":["https://steemit.com/utopian-io/@raycoms/minecolonies-and-moving-buildings"],"moderator":{"account":"helo","time":"2018-04-19T17:42:51.297Z","pending":false,"reviewed":true,"flagged":false},"questions":null,"score":null,"total_influence":null,"staff_pick":null,"config":{"questions":[{"question":"How would you rate the impact of the fixed bugs / new features on the project?","question_id":"dev-1","answers":[{"answer":"Very high - the amount of work is very high.","answer_id":1,"value":20},{"answer":"High - the amount of work is high","answer_id":2,"value":15},{"answer":"Average - the amount of work is average","answer_id":3,"value":10},{"answer":"Low - the amount of work is low.","answer_id":4,"value":5},{"answer":"Very Low - the amount of work is very little.","answer_id":5,"value":0}]},{"question":"How would you rate the quality of the provided code?","question_id":"dev-2","answers":[{"answer":"Very high - the code follows all the best practices and/or is the opposite of trivial.","answer_id":1,"value":20},{"answer":"High - the code follows nearly all the best practices and/or is not trivial at all. ","answer_id":2,"value":15},{"answer":"Average - the code follows most the best practices and/or some parts of it are trivial.","answer_id":3,"value":10},{"answer":"Low - the code doesn't really follow the best practices and/or a lot of it is trivial.","answer_id":4,"value":5},{"answer":"Very low - the code doesn't follow the best practices and is completely trivial.","answer_id":5,"value":0}]},{"question":"How do you rate the target project overall?","question_id":"dev-3","answers":[{"answer":"Very high - the project has a unique value, will (potentially) also be useful to a lot of people and has the potential to keep growing.","answer_id":1,"value":10},{"answer":"High - the project isn't really unique but it is well maintained.","answer_id":2,"value":8},{"answer":"Average - the project is limited or not very well maintained.","answer_id":3,"value":4},{"answer":"Low - quality of the project overall is low.","answer_id":4,"value":2},{"answer":"Very low - quality of the project overall is very low and not well maintained.","answer_id":5,"value":0}]},{"question":"Does the writing style meet the Utopian standard considering formalness, informativeness and clarity of the content?","question_id":"c-1","answers":[{"answer":"It is formal, informative and well written with clear content.","answer_id":1,"value":10},{"answer":"It is informative with clear content but not formal enough.","answer_id":2,"value":5},{"answer":"The contribution could be more informative or contains unrelated information, formality and clarity of the content are good enough.","answer_id":3,"value":4},{"answer":"Not all sections were clear enough but overall holds value for the project.","answer_id":4,"value":2},{"answer":"Not at all.","answer_id":5,"value":0}]},{"question":"Was the provided category template for the editor followed?","question_id":"c-2","answers":[{"answer":"All points of the template were included with additional points as well.","answer_id":1,"value":5},{"answer":"The template was followed without additions.","answer_id":2,"value":4},{"answer":"The template was edited but the points were covered in different way.","answer_id":3,"value":3},{"answer":"Not all points of the template were covered in the contribution but the structure is clear enough.","answer_id":4,"value":3},{"answer":"The template was not followed but the structure is clear enough.","answer_id":5,"value":2},{"answer":"The contents are not clearly structured at all.","answer_id":6,"value":0}]},{"question":"Did the contributor tag other users?","question_id":"c-3","answers":[{"answer":"No other users were tagged by the contributor.","answer_id":1,"value":5},{"answer":"Used tags are reasonable and all tagged people are connected to the project and/or the contribution.","answer_id":2,"value":5},{"answer":"The contribution contains mentions of other users that are not directly related to the contribution but related in other ways.","answer_id":3,"value":2},{"answer":"The contributor misuses tagging of other users.","answer_id":4,"value":0}]},{"question":"Did the contributor ask for upvotes, resteems, follows or witness vote?","question_id":"c-4","answers":[{"answer":"No","answer_id":1,"value":5},{"answer":"Yes, but not in a way that disturbs readability. ","answer_id":2,"value":5},{"answer":"Yes.","answer_id":3,"value":0}]},{"question":"Was a graphical content like images, charts, videos or screenshots included?","question_id":"c-5","answers":[{"answer":"Yes, the graphical content is included and adds more value to the contribution.","answer_id":1,"value":5},{"answer":"No but the contribution works well without graphical content well.","answer_id":2,"value":4},{"answer":"Yes, but most of the graphical content’s purpose is just for presentational matters.","answer_id":3,"value":3},{"answer":"No relevant or useful graphical content is included in the contribution.","answer_id":4,"value":0}]},{"question":"How would you rate the overall added value?","question_id":"c-6","answers":[{"answer":"Extraordinary value to both the project and the open source community overall.","answer_id":1,"value":20},{"answer":"Significant value to the project or open source community.","answer_id":2,"value":15},{"answer":"Some value to the project or open source community.","answer_id":3,"value":10},{"answer":"Little value to the project or open source community.","answer_id":4,"value":5},{"answer":"No obvious value to project or open source community.","answer_id":5,"value":0}]}]}}"
created2018-04-18 17:52:33
last_update2018-04-19 17:42:51
depth0
children13
last_payout2018-04-25 17:52:33
cashout_time1969-12-31 23:59:59
total_payout_value196.022 HBD
curator_payout_value41.718 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length8,615
author_reputation115,046,969,395,583
root_title"Minecolonies & WorkOrder Rework"
beneficiaries
0.
accountutopian.pay
weight1,500
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id50,800,119
net_rshares51,008,244,589,404
author_curate_reward""
vote details (192)
@alelimon ·
Cuando veo éstas cosas solo sé que no sé nada.
properties (22)
authoralelimon
permlinkre-raycoms-minecolonies-and-workorder-rework-20180421t043832901z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-04-21 04:38:12
last_update2018-04-21 04:38:12
depth1
children0
last_payout2018-04-28 04:38:12
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_length46
author_reputation9,990,582,720
root_title"Minecolonies & WorkOrder Rework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id51,241,952
net_rshares0
@apuvai152 · (edited)
Drear @raycoms excellent post. Thank you very much.
![love u.JPG](https://steemitimages.com/DQmdFrqi4K4iLyACFZhUZWRCJY2ToQVf75X91PvvgkYVccU/love%20u.JPG)
properties (22)
authorapuvai152
permlinkre-raycoms-minecolonies-and-workorder-rework-20180418t175742742z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"image":["https://steemitimages.com/DQmdFrqi4K4iLyACFZhUZWRCJY2ToQVf75X91PvvgkYVccU/love%20u.JPG"],"app":"steemit/0.1","users":["raycoms"]}
created2018-04-18 17:57:45
last_update2018-04-18 17:58:45
depth1
children0
last_payout2018-04-25 17:57:45
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_length153
author_reputation142,221,467,360
root_title"Minecolonies & WorkOrder Rework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id50,800,837
net_rshares0
@electronicsworld ·
$0.12
I would say that this post is awesome !! nice piece of code and nice feature !! would really love to see it in action !! keep it up !!
👍  
properties (23)
authorelectronicsworld
permlinkre-raycoms-minecolonies-and-workorder-rework-20180418t203054490z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-04-18 20:30:54
last_update2018-04-18 20:30:54
depth1
children0
last_payout2018-04-25 20:30:54
cashout_time1969-12-31 23:59:59
total_payout_value0.093 HBD
curator_payout_value0.029 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length134
author_reputation4,722,790,947,809
root_title"Minecolonies & WorkOrder Rework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id50,821,386
net_rshares23,494,028,112
author_curate_reward""
vote details (1)
@helo ·
$0.23
Thank you for the contribution. It has been approved

* I mean wow! You're an example for the community.
* So very educational. Great examples. keep showing the code.
* A must follow is you are a java developer.

----------------------------------------------------------------------
Need help? Write a ticket on https://support.utopian.io.
Chat with us on [Discord](https://discord.gg/uTyJkNm).

**[[utopian-moderator]](https://utopian.io/moderators)**
👍  
properties (23)
authorhelo
permlinkre-raycoms-minecolonies-and-workorder-rework-20180419t175240062z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"}
created2018-04-19 17:52:39
last_update2018-04-19 17:52:39
depth1
children0
last_payout2018-04-26 17:52:39
cashout_time1969-12-31 23:59:59
total_payout_value0.229 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length453
author_reputation121,547,934,535,311
root_title"Minecolonies & WorkOrder Rework"
beneficiaries
0.
accountutopian.pay
weight1,500
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id50,978,680
net_rshares65,075,438,867
author_curate_reward""
vote details (1)
@kamagie ·
$0.15
I’d love to be able to program Minecraft Mods or Plugins. Where did you learn to apply programming to Minecraft and how has it helped your skills as a developer? @raycoms
👍  , ,
properties (23)
authorkamagie
permlinkre-raycoms-minecolonies-and-workorder-rework-20180420t235541885z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"users":["raycoms"],"app":"steemit/0.1"}
created2018-04-20 23:55:42
last_update2018-04-20 23:55:42
depth1
children3
last_payout2018-04-27 23:55:42
cashout_time1969-12-31 23:59:59
total_payout_value0.120 HBD
curator_payout_value0.025 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length170
author_reputation1,357,340,184
root_title"Minecolonies & WorkOrder Rework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id51,210,607
net_rshares25,492,623,565
author_curate_reward""
vote details (3)
@raycoms ·
$1.37
That's a nice question. I actually found this mod in an extremely early stage of development 4-5 years during my Bachelor. I already knew a bit of java so I just started contributing and became now the main contributor of the mod. I think developing it has seriously shaped my skills as a developer, on the one side due to programming in java and using tools like gradle, teamcity, sonar, git, etc but as well due to working in a team, and within the team working my way up to the maintainer up to being the responsible for development.
👍  , ,
properties (23)
authorraycoms
permlinkre-kamagie-re-raycoms-minecolonies-and-workorder-rework-20180421t021443854z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-04-21 02:14:42
last_update2018-04-21 02:14:42
depth2
children2
last_payout2018-04-28 02:14:42
cashout_time1969-12-31 23:59:59
total_payout_value1.032 HBD
curator_payout_value0.338 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length536
author_reputation115,046,969,395,583
root_title"Minecolonies & WorkOrder Rework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id51,225,855
net_rshares232,245,680,107
author_curate_reward""
vote details (3)
@kamagie ·
Sorry to ask more but I really am interested. Were the other programmers experienced when you just started and did they help you learn how to program more efficiently and effectively? I currently program a little myself, but I’m just wondering if you have others there’s to help you through problems it can help.
👍  
properties (23)
authorkamagie
permlinkre-raycoms-re-kamagie-re-raycoms-minecolonies-and-workorder-rework-20180421t075221270z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-04-21 07:52:21
last_update2018-04-21 07:52:21
depth3
children1
last_payout2018-04-28 07:52:21
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_length312
author_reputation1,357,340,184
root_title"Minecolonies & WorkOrder Rework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id51,264,881
net_rshares0
author_curate_reward""
vote details (1)
@schamptui ·
Where do you learn all this! 
Very nice
properties (22)
authorschamptui
permlinkre-raycoms-minecolonies-and-workorder-rework-20180421t113119800z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-04-21 11:31:18
last_update2018-04-21 11:31:18
depth1
children1
last_payout2018-04-28 11:31:18
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_length39
author_reputation-590,247,777,597
root_title"Minecolonies & WorkOrder Rework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id51,292,029
net_rshares0
@raycoms ·
Learning by doing
properties (22)
authorraycoms
permlinkre-schamptui-re-raycoms-minecolonies-and-workorder-rework-20180421t135420438z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"app":"steemit/0.1"}
created2018-04-21 13:54:21
last_update2018-04-21 13:54:21
depth2
children0
last_payout2018-04-28 13:54:21
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_length17
author_reputation115,046,969,395,583
root_title"Minecolonies & WorkOrder Rework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id51,312,561
net_rshares0
@steembottrackerr ·
<center>https://steemitimages.com/200x200/https://s-media-cache-ak0.pinimg.com/originals/81/28/3c/81283c6aed7bdb5b9f8ad73b8ce62c2f.jpg</center>
---
<center>Hello @raycoms , Congratulations ✅ . Your content began to appear in the hot section.
I am the information account of "SteemBotTracker" site.
</center>
---
<center>
Your Informations
Total SBD: 127.17
Total STEEM: 462.529
</center>
---
<center>
I recommend to increase this;
You can make "Resteem" and advertise to the followers of the whale accounts.
"Resteem Bot" for you;
✅ The most profitable Resteem Whale @byresteem  has 25.500 Followers + 7000 Sp + Upvote with min +55 accounts. 
</center>
---
<center>
You can purchase "upvote" by bid bots.
"Upvote Bot"
✅ The most profitable whale in the last round. @postpromoter
</center>
---
<center>
I'm taking this message once. You need to use the #steembottrackerr tag for more information.
Those who "upvote" this interpretation will be awarded a "UpVote" prize of 100 Sbd per week per person.
I am a bot, I can not answer the comment. I hope I could help. Good luck. Sorry if I disturbed you.
</center>
👎  
properties (23)
authorsteembottrackerr
permlink20180418t184141875z
categoryutopian-io
json_metadata{"tags":["advice"],"app":"steemjs/test"}
created2018-04-18 18:41:45
last_update2018-04-18 18:41:45
depth1
children1
last_payout2018-04-25 18:41:45
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_length1,138
author_reputation-1,493,369,324,060
root_title"Minecolonies & WorkOrder Rework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id50,807,182
net_rshares-51,090,374,899
author_curate_reward""
vote details (1)
@abusereports ·
@steembottrackerr is on the @abusereports blacklist for being a bad Steemian! Bad spammer, bad!
properties (22)
authorabusereports
permlinkabusereports-re-steembottrackerr20180418t184141875z
categoryutopian-io
json_metadata""
created2018-04-18 18:41:54
last_update2018-04-18 18:41:54
depth2
children0
last_payout2018-04-25 18:41:54
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_length95
author_reputation199,407,425,243,286
root_title"Minecolonies & WorkOrder Rework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id50,807,205
net_rshares0
@utopian-io ·
### Hey @raycoms! Thank you for the great work you've done!
We're already looking forward to your next contribution!
#### Fully Decentralized Rewards
We hope you will take the time to share your expertise and knowledge by rating contributions made by others on Utopian.io to help us reward the best contributions together.
#### Utopian Witness!
<a href="https://v2.steemconnect.com/sign/account-witness-vote?witness=utopian-io&approve=1">Vote for Utopian Witness!</a> We are made of developers, system administrators, entrepreneurs, artists, content creators, thinkers. We embrace every nationality, mindset and belief.

**Want to chat? Join us on Discord https://discord.me/utopian-io**
properties (22)
authorutopian-io
permlinkre-raycoms-minecolonies-and-workorder-rework-20180420t180042590z
categoryutopian-io
json_metadata{"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"}
created2018-04-20 18:00:42
last_update2018-04-20 18:00:42
depth1
children0
last_payout2018-04-27 18:00:42
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_length687
author_reputation152,955,367,999,756
root_title"Minecolonies & WorkOrder Rework"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id51,167,826
net_rshares0