Conversation
# Conflicts: # src/api/java/com/minecolonies/api/colony/IVisitorData.java # src/main/java/com/minecolonies/apiimp/initializer/EntityInitializer.java # src/main/java/com/minecolonies/core/MineColonies.java # src/main/java/com/minecolonies/core/colony/interactionhandling/RecruitmentInteraction.java # src/main/java/com/minecolonies/core/colony/managers/CitizenManager.java # src/main/java/com/minecolonies/core/colony/managers/VisitorManager.java # src/main/java/com/minecolonies/core/datalistener/CustomVisitorListener.java # src/main/java/com/minecolonies/core/entity/ai/visitor/EntityAIVisitor.java # src/main/java/com/minecolonies/core/entity/citizen/VisitorCitizen.java
# Conflicts: # src/main/java/com/minecolonies/api/IMinecoloniesAPI.java # src/main/java/com/minecolonies/api/MinecoloniesAPIProxy.java # src/main/java/com/minecolonies/apiimp/CommonMinecoloniesAPIImpl.java # src/main/java/com/minecolonies/apiimp/initializer/EntityInitializer.java # src/main/java/com/minecolonies/core/entity/visitor/VisitorCitizen.java
# Conflicts: # src/main/java/com/minecolonies/api/colony/managers/interfaces/IExpeditionManager.java # src/main/java/com/minecolonies/core/colony/managers/VisitorManager.java
# Conflicts: # src/main/java/com/minecolonies/core/entity/visitor/VisitorCitizen.java
# Conflicts: # src/main/java/com/minecolonies/core/entity/visitor/VisitorCitizen.java
# Conflicts: # gradle.properties
# Conflicts: # gradle.properties # src/main/java/com/minecolonies/core/colony/Colony.java # src/main/java/com/minecolonies/core/entity/visitor/VisitorCitizen.java # src/main/java/com/minecolonies/core/event/DataPackSyncEventHandler.java # src/main/java/com/minecolonies/core/event/EventHandler.java # src/main/java/com/minecolonies/core/event/FMLEventHandler.java # src/main/java/com/minecolonies/core/network/NetworkChannel.java # src/main/resources/assets/minecolonies/lang/manual_en_us.json
src/main/java/com/minecolonies/api/colony/managers/interfaces/expeditions/ColonyExpedition.java
Outdated
Show resolved
Hide resolved
# Conflicts: # src/main/java/com/minecolonies/api/colony/ICitizenDataView.java # src/main/java/com/minecolonies/api/entity/ModEntities.java # src/main/java/com/minecolonies/apiimp/initializer/EntityInitializer.java # src/main/java/com/minecolonies/core/entity/ai/visitor/EntityAIVisitor.java # src/main/java/com/minecolonies/core/entity/visitor/VisitorCitizen.java # src/main/resources/assets/minecolonies/lang/manual_en_us.json
# Conflicts: # src/main/java/com/minecolonies/api/loot/ModLootConditions.java
# Conflicts: # src/main/java/com/minecolonies/core/colony/ColonyView.java # src/main/resources/assets/minecolonies/lang/manual_en_us.json
# Conflicts: # gradle.properties
Raycoms
left a comment
There was a problem hiding this comment.
Okay, so I'm half way through. I hopefully will do some more tomorrow.
I left a bunch of comments on the way.
Generally, the PR description needs a lot more info:
a) UIs
b) Description of expected input cost of expeditions
c) Expected outcome (death/successrate/rewards)
d) Generic description how an expedition works and how the player workflow looks like.
...a/com/minecolonies/api/entity/ai/statemachine/tickratestatemachine/TickRateStateMachine.java
Show resolved
Hide resolved
src/main/java/com/minecolonies/api/equipment/ModEquipmentTypes.java
Outdated
Show resolved
Hide resolved
src/main/java/com/minecolonies/core/client/gui/townhall/WindowTownHallExpeditions.java
Show resolved
Hide resolved
src/main/java/com/minecolonies/core/colony/events/ColonyExpeditionEvent.java
Outdated
Show resolved
Hide resolved
src/main/java/com/minecolonies/core/colony/events/ColonyExpeditionEvent.java
Show resolved
Hide resolved
...lonies/core/colony/expeditions/colony/requirements/ColonyExpeditionEquipmentRequirement.java
Show resolved
Hide resolved
src/main/java/com/minecolonies/core/colony/expeditions/encounters/ExpeditionEncounter.java
Show resolved
Hide resolved
Raycoms
left a comment
There was a problem hiding this comment.
Okay second and final review (got fully through now).
Second part looks pretty okay as well, mostly a lot of streams we should avoid with small number of values and where things can break.
A thing that I think is missing is that we have to avoid citizens from being fired from their job while on an expedition (like you can't fire a guard when on expedition).
src/main/java/com/minecolonies/core/colony/managers/TravelingManager.java
Show resolved
Hide resolved
src/main/java/com/minecolonies/core/colony/managers/TravelingManager.java
Show resolved
Hide resolved
src/main/java/com/minecolonies/core/colony/managers/TravelingManager.java
Outdated
Show resolved
Hide resolved
src/main/java/com/minecolonies/core/colony/managers/TravelingManager.java
Show resolved
Hide resolved
src/main/java/com/minecolonies/core/entity/ai/visitor/EntityAIExpeditionary.java
Outdated
Show resolved
Hide resolved
src/main/java/com/minecolonies/core/entity/visitor/ExpeditionaryVisitorType.java
Outdated
Show resolved
Hide resolved
...colonies/core/network/messages/server/colony/visitor/expeditionary/TransferItemsMessage.java
Outdated
Show resolved
Hide resolved
# Conflicts: # gradle.properties # src/main/java/com/minecolonies/api/colony/ICitizenDataView.java # src/main/java/com/minecolonies/apiimp/initializer/ModItemsInitializer.java # src/main/java/com/minecolonies/core/colony/CitizenData.java # src/main/java/com/minecolonies/core/colony/ColonyView.java # src/main/java/com/minecolonies/core/colony/buildings/modules/BuildingResourcesModule.java # src/main/java/com/minecolonies/core/colony/buildings/modules/TavernBuildingModule.java # src/main/java/com/minecolonies/core/event/EventHandler.java # src/main/java/com/minecolonies/core/event/FMLEventHandler.java # src/main/resources/assets/minecolonies/gui/layouthuts/layoutbuilderres.xml # src/main/resources/assets/minecolonies/gui/layouthuts/layoutwarehouseoptions.xml # src/main/resources/assets/minecolonies/gui/townhall/layoutactions.xml # src/main/resources/assets/minecolonies/lang/manual_en_us.json
src/main/java/com/minecolonies/api/equipment/ModEquipmentTypes.java
Outdated
Show resolved
Hide resolved
| throw new IllegalArgumentException("Items list must contain at least one item."); | ||
| } | ||
|
|
||
| final boolean hasChanged = !this.items.equals(items); |
There was a problem hiding this comment.
Honestly, I'd just make sure the index doesn't exceed list size and otherwise don't reset it on setItems?
src/main/java/com/minecolonies/core/colony/events/ColonyExpeditionEvent.java
Outdated
Show resolved
Hide resolved
# Conflicts: # src/main/java/com/minecolonies/api/colony/ICitizenDataView.java # src/main/java/com/minecolonies/api/util/constant/WindowConstants.java # src/main/java/com/minecolonies/apiimp/initializer/ModColonyEventTypeInitializer.java # src/main/java/com/minecolonies/core/MineColonies.java # src/main/java/com/minecolonies/core/client/gui/WindowHireWorker.java # src/main/java/com/minecolonies/core/client/gui/WindowResourceList.java # src/main/java/com/minecolonies/core/client/gui/citizen/CitizenWindowUtils.java # src/main/java/com/minecolonies/core/client/gui/modules/building/WarehouseOptionsModuleWindow.java # src/main/java/com/minecolonies/core/colony/Colony.java # src/main/java/com/minecolonies/core/colony/ColonyView.java # src/main/java/com/minecolonies/core/colony/buildings/modules/TavernBuildingModule.java # src/main/java/com/minecolonies/core/commands/citizencommands/CommandCitizenSpawnNew.java # src/main/java/com/minecolonies/core/entity/ai/workers/production/EntityAIWorkNether.java # src/main/java/com/minecolonies/core/entity/visitor/VisitorCitizen.java # src/main/resources/assets/minecolonies/lang/manual_en_us.json
Changes proposed in this pull request:
You will have to give them a given amount of goods and assign one or more guards to travel alongside them.
The process and some screenshots.
You start of by getting visitors spawn in your town hall, there is no research or any kind of requirement for this to start happening. These can be identified by the map icon above their heads.
Talking to them will result in them asking if you want to go on an expedition, you can accept or deny.
You will then receive the expedition guide scroll, from here you can manage the inventory for the expedition as well as which guards are assigned.
After providing them with all the stuff, you return to the expeditionary, and attempt to start the expedition, if any requirement isn't met they will tell you, otherwise they will prompt to start the expedition.
Initially the expeditionary will stick around for a bit whilst they start packing up (in future release this will involve walking to the gate). If you attempt to talk to them at this time you'll receive the following prompt (does nothing).
When they return you can claim the loot from the expedition, and you can then see the past 5 expeditions in the townhall expeditions overview.
[X] Yes I tested this before submitting it.
[ ] I also did a multiplayer test.
Review please