Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
b2923f7
settlement: align suffix naming convention
kaiserproger May 8, 2026
e45095d
backlog: split admin recovery suite
kaiserproger May 8, 2026
94d3214
settlement: tidy renamed state references
kaiserproger May 8, 2026
2c13843
merge naming convention task
kaiserproger May 8, 2026
3e9fa99
backlog: close naming convention task
kaiserproger May 8, 2026
2e28925
backlog: split assign home ui task
kaiserproger May 8, 2026
76cd03a
workgoal: migrate miner to settlement orders
kaiserproger May 8, 2026
1ba727c
settlement: extract building type validators
kaiserproger May 8, 2026
5deacb6
test: align settlement naming references
kaiserproger May 8, 2026
5068498
Merge branch 'feature/backlog-batch-20260508-ready15' into feature/bl…
kaiserproger May 8, 2026
49bf50e
Merge branch 'feature/backlog-batch-20260508-ready15' into feature/wo…
kaiserproger May 8, 2026
df6439e
workgoal: migrate farmer work goal
kaiserproger May 8, 2026
66a148b
test: align dispatcher fallback coverage
kaiserproger May 8, 2026
9e4b46f
workgoal: preserve miner no-area status
kaiserproger May 8, 2026
1a3d6cd
workgoal: avoid duplicate miner order goal
kaiserproger May 8, 2026
0d1667c
backlog: track GameTest baseline blocker
kaiserproger May 8, 2026
aeb86dc
merge farmer workgoal migration
kaiserproger May 8, 2026
5ae8f96
merge miner workgoal migration
kaiserproger May 8, 2026
77c57dd
backlog: block admin children on GameTest baseline
kaiserproger May 8, 2026
068d361
homeassign: add target selector flow
kaiserproger May 8, 2026
3165114
network: harden packet handlers against null senders
kaiserproger May 8, 2026
5adc48b
gametest: restore required baseline
kaiserproger May 8, 2026
6b96add
homeassign: clear selector on world unload
kaiserproger May 8, 2026
29f2a2f
gametest: narrow worker idle fallback
kaiserproger May 8, 2026
0f4ee81
test: refresh fuzz harness failure guidance
kaiserproger May 8, 2026
03e2f5b
gametest: centralize worker no-area status
kaiserproger May 8, 2026
3e6feb0
merge GameTest baseline restore
kaiserproger May 8, 2026
fa4b8fa
merge packet fuzz hardening
kaiserproger May 8, 2026
7d13a6c
merge assign home selector
kaiserproger May 8, 2026
2d5b5e6
backlog: close verified batch tasks
kaiserproger May 8, 2026
c9f38c4
Merge branch 'feature/backlog-batch-20260508-ready15' into feature/bl…
kaiserproger May 8, 2026
a67207c
workgoal: migrate lumberjack goal
kaiserproger May 8, 2026
cf9618d
workgoal: migrate builder work goal
kaiserproger May 8, 2026
8cef2c9
settlement: clarify bed fallback validators
kaiserproger May 8, 2026
b79055b
merge building validator extraction
kaiserproger May 8, 2026
3d88c37
merge builder workgoal migration
kaiserproger May 8, 2026
ec9512d
merge lumberjack workgoal migration
kaiserproger May 8, 2026
52e96c1
backlog: close validator and worker migrations
kaiserproger May 8, 2026
80d16b1
settlement: migrate fisherman work goal
kaiserproger May 8, 2026
efb4eee
merge merchant workgoal migration
kaiserproger May 8, 2026
afe33aa
workgoal: inherit merchant goal registration
kaiserproger May 8, 2026
1cf877e
settlement: enable fish work orders
kaiserproger May 8, 2026
806ff12
backlog: split animal farmer migration
kaiserproger May 8, 2026
64eff70
merge merchant workgoal migration
kaiserproger May 8, 2026
d6428a4
merge fisherman workgoal migration
kaiserproger May 8, 2026
9952a3c
backlog: close merchant and fisherman migrations
kaiserproger May 8, 2026
afec37f
settlement: rename prefab fallback validator
kaiserproger May 8, 2026
c2f3859
homeassign: add assign home profile buttons
kaiserproger May 8, 2026
a3eb1fd
events: enforce event package contract
kaiserproger May 8, 2026
7b9bf28
homeassign: keep recruit home button clear of inventory
kaiserproger May 8, 2026
a53b7b2
test: tighten event package contract guard
kaiserproger May 8, 2026
33f90fc
merge final events package guard
kaiserproger May 8, 2026
855d043
merge prefab validator rename
kaiserproger May 8, 2026
5bbc831
merge assign home profile buttons
kaiserproger May 8, 2026
b7b0813
backlog: close events bldg home tasks
kaiserproger May 8, 2026
2f2fa5e
test: cover assign home message path
kaiserproger May 8, 2026
ac71b75
docs: document assign home selector flow
kaiserproger May 8, 2026
4cdc217
add animal husbandry settlement orders
kaiserproger May 8, 2026
7e1c478
admincmds: add claim recovery commands
kaiserproger May 8, 2026
c29d1ac
workgoal: claim animal orders from local labor
kaiserproger May 8, 2026
9345aeb
merge admin recovery commands
kaiserproger May 8, 2026
672f898
merge assign home verification
kaiserproger May 8, 2026
0cfa672
merge animal husbandry work orders
kaiserproger May 8, 2026
fe2de80
admincmds: add worker recovery commands
kaiserproger May 8, 2026
75a4ff2
admincmds: add war wipe command
kaiserproger May 8, 2026
2213c3f
admincmds: add debug diagnostics
kaiserproger May 8, 2026
5226ea0
merge admin worker recovery commands
kaiserproger May 8, 2026
c5f76ec
merge admin war wipe command
kaiserproger May 8, 2026
6f35710
merge admin debug diagnostic commands
kaiserproger May 8, 2026
4a6d671
workgoal: migrate animal farmer orders
kaiserproger May 8, 2026
956cf23
merge animal farmer workgoal migration
kaiserproger May 8, 2026
2b166d3
move event payloads out of events package
kaiserproger May 8, 2026
2d9b3cf
test claim political entity transfer
kaiserproger May 8, 2026
66a4b06
prove claim transfer republish path
kaiserproger May 8, 2026
e19b89a
fix assassin count authority regression
kaiserproger May 8, 2026
93bfc4a
test assassin leader foreign count denial
kaiserproger May 8, 2026
64e4cde
Revert "test assassin leader foreign count denial"
kaiserproger May 8, 2026
90eefae
merge claim political entity transfer tests
kaiserproger May 8, 2026
2717892
merge events package contract fix
kaiserproger May 8, 2026
7d075cf
merge assassin count authority progress
kaiserproger May 8, 2026
0e8b754
extract sea trade analyzer
kaiserproger May 8, 2026
74c6dee
clarify settlement supply coverage
kaiserproger May 8, 2026
3914de3
merge settlement sea trade analyzer
kaiserproger May 8, 2026
2aad33b
extract settlement snapshot runtime
kaiserproger May 8, 2026
9019a4e
clarify settlement snapshot builder
kaiserproger May 8, 2026
5b9a22a
merge settlement snapshot runtime split
kaiserproger May 8, 2026
8374f5a
rename settlement package types
kaiserproger May 8, 2026
7cabb0e
merge settlement package prefix rename
kaiserproger May 8, 2026
b5609a2
accept validated sleeping-zone homes
kaiserproger May 8, 2026
964676e
prove pathfind home movement
kaiserproger May 8, 2026
884dc34
tighten home restart gametest proof
kaiserproger May 8, 2026
3906097
merge home assign sleeping-zone targets
kaiserproger May 8, 2026
f7a76f5
merge home assign movement proof
kaiserproger May 8, 2026
9e0c5cb
clarify worker wage controls
kaiserproger May 8, 2026
d2ec38c
test worker reassign authority
kaiserproger May 8, 2026
a7294e3
load perks from datapack JSON
kaiserproger May 8, 2026
057cd40
stabilize worker reassign authority tests
kaiserproger May 8, 2026
155cf05
fix perk registry default catalog
kaiserproger May 8, 2026
9e5eb5c
merge worker reassign authority test
kaiserproger May 8, 2026
58e592f
merge worker wage guide clarification
kaiserproger May 8, 2026
0371557
merge datapack perk registry
kaiserproger May 8, 2026
a176b47
add explicit worker dismiss action
kaiserproger May 8, 2026
3e98d7c
add player perk persistence attachment
kaiserproger May 8, 2026
5decaa0
fix worker ledger action menu layering
kaiserproger May 8, 2026
4b6320d
preserve player perks on respawn
kaiserproger May 8, 2026
762e87c
merge explicit worker dismiss action
kaiserproger May 8, 2026
90de7a7
merge player perk persistence attachment
kaiserproger May 8, 2026
c899401
test civilian packet catalog size
kaiserproger May 8, 2026
863f9ef
test skill tree persistence
kaiserproger May 8, 2026
35333d3
merge skill tree persistence gametests
kaiserproger May 8, 2026
d9dc361
backlog: close verified batch tasks
kaiserproger May 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 4 additions & 2 deletions MULTIPLAYER_GUIDE_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,9 +110,11 @@ Civilian work-area editors now show a sync state in the top-right corner, an exp

Right-clicking a worker now opens a compact worker ledger instead of dumping chat lines. The ledger shows owner, authority token, claim relation, assignment, current problem, and transport state in one place. If it shows `Ownership mismatch` or `Foreign claim`, fix claim/state/work-area ownership first; workers only run inside friendly authority and on the correct political side.

The same ledger also has a `To Citizen` button. It converts that worker into a free citizen on the server and applies a short auto-assignment pause so the citizen does not instantly snap back into the same vacancy before you can move or repurpose it. This is also the dismiss path: if you want to fully send a worker home, use `To Citizen` and ignore the citizen until it leaves the area, or re-hire it from a Citizen Profile to swap profession through the spawn-egg / hire flow.
The same ledger also has an `Actions` menu. `To Citizen` converts that worker into a free citizen on the server and applies a short auto-assignment pause so the citizen does not instantly snap back into the same vacancy before you can move or repurpose it. `Dismiss` is the explicit removal path: it asks the server to release the worker's current work area and remove the worker entity. Only the worker owner or an admin can dismiss; other players get denied feedback and no worker state changes.

Next to `To Citizen` the ledger now has a `Reassign` action menu. It opens a dropdown of every worker profession (Farmer, Lumberjack, Miner, Animal Farmer, Builder, Merchant, Fisherman) except the one this worker already holds. Picking an option asks the server to swap the worker's profession in place: ownership, bound work area, and position are preserved, the old worker entity is replaced with the chosen profession's worker entity at the same anchor, and the same ownership / political authority gate that allows `To Citizen` is reused for `Reassign`. There is no recurring wage system in BannerMod; profession changes only re-hire if the original spawn cost has not yet been deducted, and once the worker exists no payroll is charged.
Citizen, worker, and recruit detail screens also expose `Assign Home`. Press it to close the screen and enter a 30-second selector: aim at a bed and right-click use to send that bed position to the server as the entity's home. The HUD shows the remaining time. Press `Esc` to cancel, or wait for the selector to time out; either cancellation clears the selector without changing the home. Only a valid bed and a server-authorized owner/admin request update the entity home.

Next to `Actions` the ledger now has a `Reassign` action menu. It opens a dropdown of every worker profession (Farmer, Lumberjack, Miner, Animal Farmer, Builder, Merchant, Fisherman) except the one this worker already holds. Picking an option asks the server to swap the worker's profession in place: ownership, bound work area, and position are preserved, the old worker entity is replaced with the chosen profession's worker entity at the same anchor, and the same ownership / political authority gate that allows `To Citizen` is reused for `Reassign`. There is no recurring wage system in BannerMod; profession changes only re-hire if the original spawn cost has not yet been deducted, and once the worker exists no payroll is charged. Because workers have no wage value to set, the ledger does not show wage +/- controls unless a future payroll system adds a real server-authoritative wage field.

The current work-area editor now shows its zone box again while the screen is open, and the civilian overlay key `B` toggles nearby work areas you are allowed to control in your settlement. The overlay culls distant and fully hidden zones instead of drawing every marker through walls. For crop areas, the seed is chosen in the crop-area screen itself from the seed list built from your own inventory.

Expand Down
6 changes: 4 additions & 2 deletions MULTIPLAYER_GUIDE_RU.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,9 +110,11 @@ BannerMod добавляет поселения, рабочих, армии, г

Правая кнопка по работнику теперь открывает компактную книгу работника вместо россыпи строк в чат. В ней сразу видно владельца, токен власти, отношение к клейму, текущее назначение, проблему и состояние транспорта. Если там написано `Несовпадение владения` или `Чужое владение`, сначала выровняй владение клейма, государства и рабочей зоны: работники работают только внутри дружественной власти и на своей политической стороне.

В той же книге есть кнопка `В гражданина`. Она серверно превращает работника в свободного жителя и даёт короткую паузу на автоназначение, чтобы житель не прыгнул мгновенно обратно в ту же вакансию до того, как ты его переместишь или переназначишь. Это же путь увольнения: чтобы окончательно отпустить работника, нажми `В гражданина` и не нанимай его обратно — или, если хочешь сменить профессию через найм, найми этого гражданина заново из его профиля.
В той же книге есть меню `Действия`. `В гражданина` серверно превращает работника в свободного жителя и даёт короткую паузу на автоназначение, чтобы житель не прыгнул мгновенно обратно в ту же вакансию до того, как ты его переместишь или переназначишь. `Уволить` — явный путь удаления: он просит сервер освободить текущую рабочую зону работника и убрать сущность работника. Уволить может только владелец работника или администратор; остальные игроки получают отказ, а состояние работника не меняется.

Рядом с `В гражданина` теперь есть меню действий `Сменить`. Оно открывает выпадающий список всех рабочих профессий (Фермер, Лесоруб, Шахтёр, Скотовод, Строитель, Торговец, Рыбак), кроме той, которой работник уже владеет. При выборе сервер меняет профессию работника на месте: владелец, привязка к рабочей зоне и позиция сохраняются, прежняя сущность работника заменяется на сущность выбранной профессии в той же точке, и тот же контроль владения / политической власти, который разрешает `В гражданина`, используется и для `Сменить`. В моде нет повторяющейся системы зарплаты — стоимость найма списывается только при первом превращении гражданина в работника, и пока работник существует, никаких регулярных выплат не происходит.
В профиле жителя, книге работника и инвентаре рекрута есть кнопка `Назначить дом`. Она закрывает экран и включает 30-секундный выбор цели: наведись на кровать и нажми ПКМ/использование, чтобы отправить эту позицию на сервер как дом сущности. HUD показывает оставшееся время. `Esc` отменяет выбор, а по истечении времени выбор отменяется сам; в обоих случаях дом не меняется. Дом обновится только если цель — настоящая кровать, а запрос пришёл от владельца или администратора.

Рядом с `Действия` теперь есть меню действий `Сменить`. Оно открывает выпадающий список всех рабочих профессий (Фермер, Лесоруб, Шахтёр, Скотовод, Строитель, Торговец, Рыбак), кроме той, которой работник уже владеет. При выборе сервер меняет профессию работника на месте: владелец, привязка к рабочей зоне и позиция сохраняются, прежняя сущность работника заменяется на сущность выбранной профессии в той же точке, и тот же контроль владения / политической власти, который разрешает `В гражданина`, используется и для `Сменить`. В моде нет повторяющейся системы зарплаты — стоимость найма списывается только при первом превращении гражданина в работника, и пока работник существует, никаких регулярных выплат не происходит. Поэтому в книге работника нет кнопок зарплаты +/-: у работника нет значения зарплаты, которое можно было бы серверно изменить, пока будущая система выплат не добавит такое поле.

Окно текущей рабочей зоны снова показывает её короб прямо во время редактирования, а гражданская клавиша `B` переключает подсветку ближайших рабочих зон поселения, которыми тебе разрешено управлять. Подсветка отсекает дальние и полностью скрытые зоны, вместо того чтобы рисовать всё сквозь стены. Для полей семена выбираются прямо в экране `Crop Area` из списка, собранного из предметов в твоём инвентаре.

Expand Down
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,7 @@ tasks.register('verifyGameTestScenarioCoverage') {
'src/gametest/java/com/talhanation/bannermod/BannerModDedicatedServerReconnectGameTests.java' : ['@GameTestHolder(BannerModMain.MOD_ID)', '@GameTest'],
'src/gametest/java/com/talhanation/bannermod/BannerModMultiplayerAuthorityConflictGameTests.java': ['@GameTestHolder(BannerModMain.MOD_ID)', '@GameTest'],
'src/gametest/java/com/talhanation/bannermod/BannerModMultiplayerCooperationGameTests.java' : ['@GameTestHolder(BannerModMain.MOD_ID)', '@GameTest'],
'src/gametest/java/com/talhanation/bannermod/BannerModHomeAssignGameTests.java' : ['@GameTestHolder(BannerModMain.MOD_ID)', 'assignHomeMessageAcceptsBedFromOwner'],
'src/gametest/java/com/talhanation/bannermod/BannerModMusketModFirearmGameTests.java' : ['@GameTestHolder(BannerModMain.MOD_ID)', 'recruitMusketUsesMusketModProjectileReloadAndAmmoDenial', 'recruitBayonetMusketUsesMusketModProjectileReloadAndAmmoDenial', 'recruitScopedMusketUsesMusketModProjectileReloadAndAmmoDenial', 'recruitBlunderbussUsesMusketModProjectileReloadAndAmmoDenial', 'recruitPistolUsesMusketModProjectileReloadAndAmmoDenial'],
'src/gametest/java/com/talhanation/bannermod/BannerModGame001ProjectGameTests.java' : ['@GameTestHolder("bannermod_game_001")', 'settlementProjectCreatesExecutableBuildAreaInWorld'],
'src/gametest/java/com/talhanation/bannermod/BannerModGame009ProjectGameTests.java' : ['@GameTestHolder("bannermod_game_009")', 'settlementProjectBindsToExecutableBuildAreaTarget'],
Expand Down
Loading
Loading