Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bugfix/#758 concurrency issue #1025

Merged
merged 3 commits into from
May 21, 2017
Merged

Conversation

cltnschlosser
Copy link
Member

@cltnschlosser cltnschlosser commented May 20, 2017

Closes #758
Closes #1027
Closes #993

Further testing still needs to be done, but this should fix the crashes. Unsure of what exactly was modifying the lists. Unless the AI and block ticks were done separately. Its possible that in single player the AI task was running on the server thread, and the block tick on the client thread.

…house tasks.

The list is being modified often, and being treated like a queue. The ConcurrentLinkedQueue should be a better data structure for the situation and be more performant.
@@ -92,10 +93,10 @@ public void update()
if (i == index)
{
if(buildingEntry.getValue() instanceof AbstractBuildingWorker
&& !list.contains(buildingEntry.getValue())
&& ((AbstractBuildingWorker) buildingEntry.getValue()).needsAnything())
&& !taskQueue.contains(buildingEntry.getValue())

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MINOR This call to "contains()" may be a performance hot spot if the collection is large. rule

}
return true;
}
if (list.contains(buildingEntry))

if (taskQueue.contains(buildingEntry))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MINOR This call to "contains()" may be a performance hot spot if the collection is large. rule

}
return true;
}

if (list.contains(buildingEntry))
if (taskQueue.contains(buildingEntry))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MINOR This call to "contains()" may be a performance hot spot if the collection is large. rule

@MinecoloniesSonar
Copy link

SonarQube analysis reported 70 issues

  • MAJOR 29 major
  • MINOR 41 minor

Watch the comments in this conversation to review them.

Top 10 extra issues

Note: The following issues were found on lines that were not modified in the pull request. Because these issues can't be reported as line comments, they are summarized here:

  1. MAJOR AbstractBuilding.java#L38: Split this class into smaller and more specialized ones to reduce its dependencies on other classes from 32 to the maximum authorized 30 or less. rule
  2. MAJOR AbstractBuilding.java#L38: class "AbstractBuilding" has 68 methods, which is greater than the 35 authorized. Split it into smaller classes. rule
  3. MAJOR AbstractBuilding.java#L106: Remove this reference to "BuildingBaker". rule
  4. MAJOR AbstractBuilding.java#L106: Remove this reference to "BuildingBaker". rule
  5. MAJOR AbstractBuilding.java#L107: Remove this reference to "BuildingBlacksmith". rule
  6. MAJOR AbstractBuilding.java#L107: Remove this reference to "BuildingBlacksmith". rule
  7. MAJOR AbstractBuilding.java#L108: Remove this reference to "BuildingBuilder". rule
  8. MAJOR AbstractBuilding.java#L109: Remove this reference to "BuildingHome". rule
  9. MAJOR AbstractBuilding.java#L109: Remove this reference to "BuildingHome". rule
  10. MAJOR AbstractBuilding.java#L110: Remove this reference to "BuildingFarmer". rule

}
return true;
}
}
if (list.contains(buildingEntry))

if (taskQueue.contains(buildingEntry))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MINOR This call to "contains()" may be a performance hot spot if the collection is large. rule

@marvin-bitterlich
Copy link
Member

marvin-bitterlich commented May 21, 2017

LGTM we may have to see if we can get rid of some of the contains calls, but the n should be small in all cases

Approved with PullApprove

@marchermans
Copy link
Contributor

Some of These changes will be overriden by the new DMan System.
I am still working on its actuall implementation with regards to the WareHouse and the DMan AI.

However the State Based AI should make it much reliable when it comes to multithreading.

@marchermans
Copy link
Contributor

marchermans commented May 21, 2017

Approved

Approved with PullApprove

@cltnschlosser
Copy link
Member Author

If the contains performance becomes an issue we could keep a HashSet in parallel with this to give us a constant time contains.

@xavierh
Copy link
Contributor

xavierh commented May 21, 2017

LGTM

Approved with PullApprove

@Raycoms
Copy link
Contributor

Raycoms commented May 21, 2017

:shipit:

Approved with PullApprove

@Raycoms
Copy link
Contributor

Raycoms commented May 21, 2017

can you make a port to 1.10 as well?

@Raycoms Raycoms merged commit e9714d4 into version/1.11 May 21, 2017
@Raycoms Raycoms deleted the bugfix/#758-concurrency-issue branch May 21, 2017 15:24
cltnschlosser added a commit that referenced this pull request May 21, 2017
* Centralize the copying of the needed items list, and make it explicitly clear a copy is happening

* Remove duplicated methods, and unnecessary casts

* Change CopyOnWriteArrayList to ConcurrentLinkedQueue for current warehouse tasks.

The list is being modified often, and being treated like a queue. The ConcurrentLinkedQueue should be a better data structure for the situation and be more performant.
marvin-bitterlich pushed a commit that referenced this pull request May 21, 2017
* Centralize the copying of the needed items list, and make it explicitly clear a copy is happening

* Remove duplicated methods, and unnecessary casts

* Change CopyOnWriteArrayList to ConcurrentLinkedQueue for current warehouse tasks.

The list is being modified often, and being treated like a queue. The ConcurrentLinkedQueue should be a better data structure for the situation and be more performant.
marvin-bitterlich added a commit that referenced this pull request May 25, 2017
* Patch in the CurseForge upload module. (#881)

I forgot to add the module when I Marvins pr.

* Feature/happiness n hunger (#880)

* Fix exceptions with blockFire

Also fix problem with coarse dirt and podzol

* Improve flint&Steel handling

And fix coarse dirt for good

* Fix the requesting of the flint and steel and fishing rod if used

* sonar fixes and more

* improve grass handling

* fix small bug

* some more sonar fixes

* Removing dependencies of Abstract class to siblings

* Fix up javadoc

* First part saturation and colony happiness

* Handle food gathering

* Some adaptions for the dman

* Adapt class check to predicate

* Refactor building code

* add missing handlers

* Improve saturation handling

* fix grasspath issue

* improve handling part 1

* fix general handler

* part 2

* fix placement handler bug

* only get certain amount

* fix bug

* Remove surpress

* suppress for now

* Update Colony.java

* Request saturation correctly

* Add requesting, fix builder bugs

* Fix logik error

* small adaptions

* Also citizens without home can talk

* Improve counter attack of guards and update the colony

* fix error with stuck dman

* fix delivery

* avoid friendly fire for counter attack

* Higher food necessity at higher building level

* Add comments and let dman take extra food with him if saturation low

* fix nullpointer exception

* Patch in the CurseForge upload module.

I forgot to add the module when I Marvins pr.

* -If the tree is a slime tree is now stored in NBT (#882)

* Feature/happiness n hunger (#887)

* Fix exceptions with blockFire

Also fix problem with coarse dirt and podzol

* Improve flint&Steel handling

And fix coarse dirt for good

* Fix the requesting of the flint and steel and fishing rod if used

* sonar fixes and more

* improve grass handling

* fix small bug

* some more sonar fixes

* Removing dependencies of Abstract class to siblings

* Fix up javadoc

* First part saturation and colony happiness

* Handle food gathering

* Some adaptions for the dman

* Adapt class check to predicate

* Refactor building code

* add missing handlers

* Improve saturation handling

* fix grasspath issue

* improve handling part 1

* fix general handler

* part 2

* fix placement handler bug

* only get certain amount

* fix bug

* Remove surpress

* suppress for now

* Update Colony.java

* Request saturation correctly

* Add requesting, fix builder bugs

* Fix logik error

* small adaptions

* Also citizens without home can talk

* Improve counter attack of guards and update the colony

* fix error with stuck dman

* fix delivery

* avoid friendly fire for counter attack

* Higher food necessity at higher building level

* Add comments and let dman take extra food with him if saturation low

* fix nullpointer exception

* Patch in the CurseForge upload module.

I forgot to add the module when I Marvins pr.

* Feature/buildtool server side nbt develop (#879)

* Feature/buildtool server side nbt (#777)

* Add a persistent UUID to the server, saved in minecolomies.dat
Send the UUID to the client when the player log in.
The UUID will be use to create a directory on the client to store data specific to a server

* request as schematic from the client and send the schematic back by the server

* Allow to override huts and decorations by nbt file in a directory

* Add custom decoration (from local player)
Cache file using the md5 hash as a file name inside cache directory
When the player want to use custom, he will need to send the schematic unless the cache/<md5 hash> already exists

Schematic can be send to the server only if enabled in the configuration (disable by default), no schematic management is done yet, no limitation on the number of schamatic send, unused one are still there.

* Remember the last structure build, so we can quicky build it again, usefull for walls
Store the name instead of index as they may change

* Allow to rename/delete custom schematic

Conflicts:
	src/main/java/com/minecolonies/coremod/MineColonies.java
	src/main/java/com/minecolonies/coremod/client/gui/WindowBuildTool.java
	src/main/java/com/minecolonies/coremod/colony/Structures.java
	src/main/java/com/minecolonies/coremod/colony/buildings/AbstractBuilding.java
	src/main/java/com/minecolonies/coremod/colony/workorders/WorkOrderBuild.java
	src/main/java/com/minecolonies/coremod/entity/ai/basic/AbstractEntityAIStructure.java
	src/main/java/com/minecolonies/coremod/network/messages/BuildToolPlaceMessage.java
	src/main/java/com/minecolonies/coremod/network/messages/SaveScanMessage.java
	src/main/java/com/minecolonies/coremod/util/ClientStructureWrapper.java

* javadoc

* Update build.properties

* Adding Changelog generation. (#896)

Signed-off-by: OrionOnline <oriondevelopment@outlook.com>

* 1.10-Rewrite handleKeepX to be identical than release/1.11 (#931)

* Rewrite handleKeepX to be identical that release/1.11

* fix package info

* Hotfix for the DMan (#940)

* Hotfix for the DMan not behaving properly cause it is not getting reported about the insertion result

* Fixing a type in the iteration for the extraction slots of the DMan

* Feature/limit warehouse (#948)

* should fix the no tinkers crashes

* should fix trange crash

* Fix fisherman

* limit warehouse

* Feature/better builder lj positioning (#952)

* fix lumberjack position finding and fix builder position finding

* Fix sonar issues

* bump version

* Fix/no tarzan (#974)

* fix lumberjack position finding and fix builder position finding

* Fix sonar issues

* Fix Tarzan climbing the trees

Uhm I meant the lumberjack

* remove unimplemented huts (#973)

* bump version

* Hotfix/low stats (#976)

* fix lumberjack position finding and fix builder position finding

* Fix sonar issues

* Fix Tarzan climbing the trees

Uhm I meant the lumberjack

* fix bug where citizen start all up with 1

* Average Housing on Happiness Calculation (#981)

Fixes: #978

* 1.10 d-man delivery fix (#986)

* 1.11 d-man delivery fix (#980)

* Fix forceTransferStack return value
Fix some java doc

* Fix javadoc

* Fix happiness calculation about housing

* Transfer for real instead of simulating

* remove some warnings

Conflicts:
	src/main/java/com/minecolonies/coremod/colony/Colony.java
	src/main/java/com/minecolonies/coremod/util/InventoryUtils.java

* sonar

* Fix/builder duping 10 (#988)

* fix lumberjack position finding and fix builder position finding

* Fix sonar issues

* Fix Tarzan climbing the trees

Uhm I meant the lumberjack

* fix bug where citizen start all up with 1

* Fix problem with builder requesting double

* don't request solid placeholder if world is solid

* make citizen only tp if employed

* recalculate after reload

* balance happiness depending on guards

* Fix/colony crash10 (#998)

* Stop crashing with other world events

* add new creativetab design to 1.10

* Sonar/warnings (#992) (#995)

* Sonar/warnings (#992)

* Fix Blockers

* first draft for translation constants

* fix formatting

* fix some constants and other issues

* formatting

* fix some ternaries

* sonar fixes

* add suppress

* add doc files

* reorder

* wtf java

* last fixes

* remove unused

* Update InventoryCitizen.java

* Update WindowHireWorker.java

* Update WindowHireWorker.java

* Feature/builder pickup (#999)

* Make builder pickup items after building

* sonar fix cast to double

* remove unused import

* Add female dman sounds + functionality for hostile and saturation (#990)

* Add female dman sounds + functionality for hostile and saturation

* be happy sonar

* fix nullpointer exception

* increase chance

* fix small bug

* remove import

* Update EntityAICitizenAvoidEntity.java

* Fix dman sound surpress template

* stage

* Might look better like this.

* add package info

* Fix problematic behavior

* imports

* Feature/builder pickup (#1002)

* Make builder pickup items after building

* sonar fix cast to double

* remove unused import

* remove double guard code 1.10

* unused import

* Update doc

* Feature/1.10 better chat (#994) (#1007)

* Feature/1.10 better chat (#994)

* Suppress some warning

* Add worker name to the message when chest is full

* remove warnings

* Builder say when then start/end a job

* Shorter chat version for colony owner

* D-man only say that the chest if full when ihe cannot swap
D-man say whose chest is full

* Change dman saying

* Compare itemstack properly

* Different message when pick axe requested level is greater than hut level

* D-man hold the item he will deliver or the item he did gather
Fix javadoc

* EntityCitizen does not know about BuildingFarmer now

* remove most of the Jobs from EnityCitizen

* dman hold the correct item

Conflicts:
	src/main/java/com/minecolonies/coremod/colony/buildings/BuildingFarmer.java
	src/main/java/com/minecolonies/coremod/colony/jobs/AbstractJob.java
	src/main/java/com/minecolonies/coremod/entity/EntityCitizen.java
	src/main/java/com/minecolonies/coremod/entity/ai/citizen/builder/EntityAIStructureBuilder.java
	src/main/resources/assets/minecolonies/lang/en_US.lang

* add some package info

* package info

* make waypoints render when buildtool open (#1004)

* make waypoints render when buildtool open

* Fix javadoc

* javadoc

* Add colony border rendering as well

* fix sonar issues

* fix door duping of builder

* Make marvin happy, add package info.

* fix up buggy behavior

* fix annotations and sonar issues

* fix it up

* Refactor/1.11 workorders (#1012) (#1013)

* Suppress some warning

* Add worker name to the message when chest is full

* Fix warnings for PlacementHandlers

* Builder say when then start a job

* WorkOrderBuildHut extends WorkOrderBuildDecoration
instead of
WorkOrderBuildDecoration extends WorkOrderBuild

* revert WorkOrderBuildHut class to WorkOrderBuild

* Work Manager does not need to know about Construction tape and WorkOrderBuildDecoration

* JobBuilder class does not need to know about WorkOrderBuild

* remove duplicated code

* add package info

* Sonar suppress

Conflicts:
	src/main/java/com/minecolonies/coremod/colony/WorkManager.java
	src/main/java/com/minecolonies/coremod/entity/ai/citizen/builder/ConstructionTapeHelper.java

* bug #1014 fix crash when a colony does not have any owner (#1015)

* fix crash when a colony does not have any owner

* remove logging

* Bugfix/#758 concurrency issue (#1025) (#1029)

* Centralize the copying of the needed items list, and make it explicitly clear a copy is happening

* Remove duplicated methods, and unnecessary casts

* Change CopyOnWriteArrayList to ConcurrentLinkedQueue for current warehouse tasks.

The list is being modified often, and being treated like a queue. The ConcurrentLinkedQueue should be a better data structure for the situation and be more performant.

* Check if citizen is jobless before triggering job death achievement (#1038)

* Dismount before teleporting, and add check for invalid line width (#1036)

* Feature/1.10 efficient dman (#1044)

* Feature/1.10 efficient dman (#1017)

* gather from the chest which have just been delivered

* Deliver mor ethan one stack at a time depending of the deliveryman hut's level

* * in BuildingBuilder override neededForWorker instead of using the custom requiresResourceForBuilding method
* Add container to building event when the builder did not have to build it

* register block in AbstractBuilding instead of adding container only, so that extending class could register any type of block, not only chests

* remove checkInWareHouseForFood method in favour of polymorphisme

* remove duplicated code

* javadoc

* language constant

* revert back some changes

Conflicts:
	src/main/java/com/minecolonies/coremod/colony/buildings/AbstractBuilding.java
	src/main/java/com/minecolonies/coremod/colony/buildings/BuildingBuilder.java
	src/main/java/com/minecolonies/coremod/entity/ai/citizen/deliveryman/EntityAIWorkDeliveryman.java

* Citizen hut need food
marvin-bitterlich added a commit that referenced this pull request May 25, 2017
* Create suppressing.MD (#876)

* Finishing Base Merge. (#883)

* Finishing Base Merge. (#886)

* Port/1.11/cap inventory interaction (#818)

* Updated the Inventory system to capabilities in 1.11

Signed-off-by: OrionOnline <oriondevelopment@outlook.com>

* Add CheckStyle and PMD as plugins to the build.gradle. (#784)

* Adding/Updating Style Data.

Added:
  * pmd.xml. Holds the PMD Configuration from the PMD Module of the SonarQube Server.

Updated:
  * checkstyle.xml. Holds the additional style checks SonarQube performs.

* Added PMD and Checkstyle gradle plugins.

Updated:
  * build.gradle to add PMD and Checkstyle Gradle-plugins.
  * CheckStyle.xml to reflect the Minecolonies coding style.

* Added PMD and Checkstyle gradle plugins.

Updated:
  * build.gradle to add PMD and Checkstyle Gradle-plugins.
  * CheckStyle.xml to reflect the Minecolonies coding style.

* Some small reformatting to trigger a new build.

* Shrink maximal line length to 180

* Switch to TeamCity (#792)

* Switch to TeamCity

Add support for TeamCity Branch and Build number, having Travis as a fallback

* Update build.gradle

* trigger a new build

* Some last merging fixes - and Formatting of course.

Signed-off-by: OrionOnline <oriondevelopment@outlook.com>

* Some last merging fixes - and Formatting of course.

Signed-off-by: OrionOnline <oriondevelopment@outlook.com>

* Small minor changes to make the base change work.

Signed-off-by: OrionOnline <oriondevelopment@outlook.com>

* Merge Fix/cap based interaction (#800)

* Fix the TransferItemsRequestMessage.

* Fix NPE when tools are searched in inventories with empty slots.

* Fix possible NPE in search for tools.

* Some NPE Fixes and Formatting.

* Removed getFirstFillableSlotInItemHandler and other related methods.

* Changed the way Sonar replacement is handled.
It is run once now at the end of a build.

* Fixing an Item Duplication bug when items are transferred.

Signed-off-by: OrionOnline <oriondevelopment@outlook.com>

* Fixing build error that are introduced by merging version/1.11 into the PR branch.

Signed-off-by: OrionOnline <oriondevelopment@outlook.com>

* Update build.properties

* Adding Changelog generation. (#896)

Signed-off-by: OrionOnline <oriondevelopment@outlook.com>

* Update build.properties (#898)

* Port to 1.11 guard builder (#934)

* merge guard improvements

* add that but have to remove imports

* Fix merge problems.

* merge builder changes

* Fix merge conflicts

* fix some things in placement handler, have to wait for 1.11 capabilities

* fix recipe handler

* merge saturation

* Hotfix/fix happiness (#905)

* save happiness and don't devidi through 0

* add constants

* check if citizenData != null first

* fix assets

* another hotfix, new citizen cause crash if happiness 1

* don't double request resources

* Fix prboblem with incorrect amount of entities requesting

* Fix crash with full inventory on food pickup

* fi xnullpointer

* delay warehouse more

* remove unnecessary import

* fix merge issues

* optimize imports

* merge hotfix

* 1.11 - Hotfix for the DMan (#945)

* Hotfix for the DMan not behaving properly cause it is not getting reported about the insertion result

* Fixing the compile error.

* Fix/crashes expceptions (#951)

* merge guard improvements

* add that but have to remove imports

* Fix merge problems.

* merge builder changes

* Fix merge conflicts

* fix some things in placement handler, have to wait for 1.11 capabilities

* fix recipe handler

* merge saturation

* Hotfix/fix happiness (#905)

* save happiness and don't devidi through 0

* add constants

* check if citizenData != null first

* fix assets

* another hotfix, new citizen cause crash if happiness 1

* don't double request resources

* Fix prboblem with incorrect amount of entities requesting

* Fix crash with full inventory on food pickup

* fi xnullpointer

* delay warehouse more

* remove unnecessary import

* fix merge issues

* optimize imports

* merge hotfix

* fix crashes and exceptions

* correct predicate chaining and fix flintNSteel

* Fix bug where things don't get dumped correctly

* Update InventoryUtils.java

* make marvin happy

* Fix/crashes expceptions (#954)

* merge guard improvements

* add that but have to remove imports

* Fix merge problems.

* merge builder changes

* Fix merge conflicts

* fix some things in placement handler, have to wait for 1.11 capabilities

* fix recipe handler

* merge saturation

* Hotfix/fix happiness (#905)

* save happiness and don't devidi through 0

* add constants

* check if citizenData != null first

* fix assets

* another hotfix, new citizen cause crash if happiness 1

* don't double request resources

* Fix prboblem with incorrect amount of entities requesting

* Fix crash with full inventory on food pickup

* fi xnullpointer

* delay warehouse more

* remove unnecessary import

* fix merge issues

* optimize imports

* merge hotfix

* fix crashes and exceptions

* correct predicate chaining and fix flintNSteel

* Fix bug where things don't get dumped correctly

* Update InventoryUtils.java

* make marvin happy

* fix citizenData null crash

* fix name

* improve creative tab

* Fix up nullpointer exception

* merge builder and lj positioning

* merge sonar fix

* fix merge bugs

* change creativetab

* bump version

* Bug/1.11 remove some warnings (#965)

* Suppress some warning

* remove more warnings

* Fix warnings for PlacementHandlers

* remove more warnings + sonar fixes

* fixes sonar

* more sonar

* Add package info

* Fix packages info

* Fix/crashes expceptions (#970) (#971)

* merge guard improvements

* add that but have to remove imports

* Fix merge problems.

* merge builder changes

* Fix merge conflicts

* fix some things in placement handler, have to wait for 1.11 capabilities

* fix recipe handler

* merge saturation

* Hotfix/fix happiness (#905)

* save happiness and don't devidi through 0

* add constants

* check if citizenData != null first

* fix assets

* another hotfix, new citizen cause crash if happiness 1

* don't double request resources

* Fix prboblem with incorrect amount of entities requesting

* Fix crash with full inventory on food pickup

* fi xnullpointer

* delay warehouse more

* remove unnecessary import

* fix merge issues

* optimize imports

* merge hotfix

* fix crashes and exceptions

* correct predicate chaining and fix flintNSteel

* Fix bug where things don't get dumped correctly

* Update InventoryUtils.java

* make marvin happy

* fix citizenData null crash

* fix name

* improve creative tab

* Fix up nullpointer exception

* merge builder and lj positioning

* merge sonar fix

* fix merge bugs

* change creativetab

* fix bug with dman dumping wrong

* fix tarzan climbin trees (#975)

Uhm I meant the lumberjack

* remove not release hut block (#972)

* Hotfix/low stats[port to 1.11] (#977)

* remove not release hut block

* fix bug where citizen start all up with 1

* 1.11 d-man delivery fix (#980)

* Fix forceTransferStack return value
Fix some java doc

* Fix javadoc

* Fix happiness calculation about housing

* Transfer for real instead of simulating

* Fix/builder duping (#984)

* remove not release hut block

* fix bug where citizen start all up with 1

* Fix problem with builder requesting double

* don't request solid placeholder if world is solid

* only teleport employed citizen

* recalculate after reload

* balance happiness depending on guards

* Sonar/warnings (#992)

* Fix Blockers

* first draft for translation constants

* fix formatting

* fix some constants and other issues

* formatting

* fix some ternaries

* sonar fixes

* add suppress

* add doc files

* reorder

* wtf java

* last fixes

* remove unused

* Stop crashing with other world events (#997)

* Feature/1.11 better chat (#994)

* Suppress some warning

* Add worker name to the message when chest is full

* remove warnings

* Builder say when then start/end a job

* Shorter chat version for colony owner

* D-man only say that the chest if full when ihe cannot swap
D-man say whose chest is full

* Change dman saying

* Compare itemstack properly

* Different message when pick axe requested level is greater than hut level

* D-man hold the item he will deliver or the item he did gather
Fix javadoc

* EntityCitizen does not know about BuildingFarmer now

* remove most of the Jobs from EnityCitizen

* dman hold the correct item

* Feature/builder pickup to 1.11 (#1000)

* make builder pickup things

extract from lj to interact

* sonar fix cast to double

* remove unused import

* remove double guard code

* unused import

* Update doc

* Refactor even smaller

* missing package keyword (#1008)

* Refactor/1.11 workorders (#1012)

* Suppress some warning

* Add worker name to the message when chest is full

* remove more warnings

* Fix warnings for PlacementHandlers

* Builder say when then start a job

* WorkOrderBuildHut extends WorkOrderBuildDecoration
instead of
WorkOrderBuildDecoration extends WorkOrderBuild

* revert WorkOrderBuildHut class to WorkOrderBuild

* Work Manager does not need to know about Construction tape and WorkOrderBuildDecoration

* JobBuilder class does not need to know about WorkOrderBuild

* remove duplicated code

* fix

* Fix javadoc

* sonar

* Fix sonar issue and suppress sonar warnings

* fix sonar issues

* sanar fixes

* add package info

* Sone suppress

* bug #1014 fix crash when a colony does not have any owner (#1016)

* Fix when colony does not have an owner

* remove logging

* Bugfix/#758 concurrency issue (#1025)

* Centralize the copying of the needed items list, and make it explicitly clear a copy is happening

* Remove duplicated methods, and unnecessary casts

* Change CopyOnWriteArrayList to ConcurrentLinkedQueue for current warehouse tasks.

The list is being modified often, and being treated like a queue. The ConcurrentLinkedQueue should be a better data structure for the situation and be more performant.

* Dismount entities before trying to teleport citizens (#1034)

* Put item icon in the builder resource tab (#1033)

* Check if citizen is jobless before triggering job death achievement (#1037)

* Port to 1.11 (waypoints, colony border, sounds, warehouse restriction) (#1032)

* merge changes to 1.11 for waypoints

* add dman sounds and basics

* first merge fixes

* also restrict to 1 warehouse per colony

* some last merge problems

* Fix javadoc error

* Add check for invalid line width (#1035)

* Feature/1.11 efficient dman (#1017)

* gather from the chest which have just been delivered

* Deliver mor ethan one stack at a time depending of the deliveryman hut's level

* * in BuildingBuilder override neededForWorker instead of using the custom requiresResourceForBuilding method
* Add container to building event when the builder did not have to build it

* register block in AbstractBuilding instead of adding container only, so that extending class could register any type of block, not only chests

* remove checkInWareHouseForFood method in favour of polymorphisme

* remove duplicated code

* javadoc

* language constant

* revert back some changes

* Used NBT Editor to replace stone brick monster eggs with stone brick (#1041)

* Feature/1.11 efficient dman 2 (#1043)

* gather from the chest which have just been delivered

* Deliver mor ethan one stack at a time depending of the deliveryman hut's level

* * in BuildingBuilder override neededForWorker instead of using the custom requiresResourceForBuilding method
* Add container to building event when the builder did not have to build it

* register block in AbstractBuilding instead of adding container only, so that extending class could register any type of block, not only chests

* remove checkInWareHouseForFood method in favour of polymorphisme

* remove duplicated code

* javadoc

* language constant

* revert back some changes

* Huts need food

* annotation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants