Skip to content

Conversation

@EmanuelCatania
Copy link

  • Summary: This PR contributes the main improvements from the OpenMU‑S2 fork: adds English/Spanish localization, enhances the Admin Panel (including log tailing), refactors and fixes summon behavior, adds event data (Rena, Golden Archer, White Wizard), improves logging and Docker setups, and updates docs and tests.

  • Highlights by area:

    • Localization: New src/Localization project with JSON resources (strings.en.json, strings.es.json); Admin Panel localization with LanguageSelector and localized components/files under src/Web/AdminPanel/Localization.

    • Admin Panel: New pages and widgets (e.g., Craftings.razor, LogTail.razor, LogTailWidget.razor), improved tables and navigation, style tweaks, and UX fixes across multiple .razor pages.

    • Summon logic: Refactor to allow a single configuration plug‑in to customize all summons; fix self‑defense interaction with own summon; expanded logging for summon behavior.

    • Gameplay fixes: Multiple fixes in crafting, inventory, trade, dup prevention, zen handling, NPC interactions, and attribute calculations across src/GameLogic/*.

    • Event/data updates: Add/update data and initialization for Rena global drop, Golden Archer, and White Wizard; adjust UpdateVersion to include new updates and keep upstream values intact.

    • Plug‑ins and commands: New AutoBroadcastMessagesPlugIn; additional chat command capabilities (e.g., item stack command args and handling).

    • Networking: Packet updates for item crafting result and related server‑to‑client definitions.

    • Startup & logging: In‑memory log buffer/sink and console logging utilities under src/Startup/Logging; Program.cs and appsettings.json adjustments to surface logs and improve diagnostics.

    • Docker: Multiple compose variants and overlays for local/public/LAN and with/without NGINX (deploy/all-in-one/*), plus admin‑port override.

    • Docs: Updated README.md, QuickStart.md, and added docs for events and summon/logging (docs/*).

    • Solution: Added src/Localization/MUnique.OpenMU.Localization.csproj and updated src/MUnique.OpenMU.sln.

    • Tests: Added tests/MUnique.OpenMU.Tests/SelfDefensePlugInTest.cs, updated packet tests.

  • Breaking changes / migration:

    • Database initialization updates extended (via UpdateVersion and new update plug‑ins). Existing environments may need to re‑run initialization or apply updates to include new event data.
    • New Localization project referenced by the solution; consumers should restore/build the solution to pick it up.
    • Admin Panel resources and startup config changed; ensure appsettings.json is aligned.
  • How to test:

    • Build: dotnet build src/MUnique.OpenMU.sln
    • Run Admin Panel, verify language selector switches EN/ES and strings render correctly.
    • Verify summon self‑defense behavior (no unintended PK/self‑defense triggers with own summon).
    • Check event data presence (Rena drops, Golden Archer, White Wizard) after initialization.
    • Use log tail page to confirm live log streaming works during server activity.
  • Size and scope:

    • 217 files changed, 7,237 insertions, 608 deletions.
    • Touches: GameLogic, AdminPanel, Startup/Logging, Persistence/Initialization, Network packets, Docker, Docs, and Tests.

AdminPanel ES + presets Docker LAN/Public (RESOLVE_IP) y ajustes S6
eliminate 8080/8081
…nish-and-english

docs: add bilingual readme and fork changelog
…nish-and-english-q7sxr5

fix: apply custom drop to invasion boss
…anol

feat: add Spanish translations for server and panel messages
…se-payload

Send Chaos mix success rate and bonus to client
…sa-de-la-elfa

Add plugin for customizable summoned monsters and fix summond skill
…configurationplugin

refactor: remove plugin inheritance from summon config
@Mosch0512
Copy link
Contributor

PR Size Reduction Proposal – Suggested Feature Branch Split

The current pull request is far too large to be reviewed and maintained effectively.
With more than 200 files changed and over 7,000 insertions touching gameplay, networking, Admin Panel UI, database initialization, Docker, and infrastructure, the PR mixes multiple responsibilities and unrelated domains.


1. Foundation Branch

feature/localization-core

Contains only:

  • Introduction of the src/Localization project
  • JSON resources (strings.en.json, strings.es.json)
  • Core localization services and abstractions
  • Language selector infrastructure
  • DI registration and solution reference updates
  • Documentation related to localization

Rationale:
Completely self-contained infrastructure change with no gameplay impact.


2. Admin Panel

feature/adminpanel-localization

  • Localization of razor components under src/Web/AdminPanel/Localization
  • Implementation of LanguageSelector
  • Translation of existing Admin Panel pages
  • Exclusively string/resource replacement
  • Admin Panel localization documentation

Optional splits if still large:

  • feature/adminpanel-localization-tables
  • feature/adminpanel-localization-navigation

3. Summon System

feature/summon-refactor

Includes:

  • Refactor to allow a single configuration plug-in to customize all summons
  • Fix self-defense interaction with own summon
  • Expanded summon behavior logging
  • Summon-related unit tests
  • Summon documentation

Must NOT include:

  • Event systems
  • Inventory or crafting fixes
  • Admin Panel features

4. Event Systems

feature/events-game-data

  • Rena global drop implementation
  • Golden Archer data and initialization
  • White Wizard data and initialization
  • UpdateVersion extensions for event data
  • Documentation of each event as part of this branch

Potential additional branches:

  • feature/events-rena-drop
  • feature/events-golden-archer
  • feature/events-white-wizard

5. Gameplay Mechanics

feature/gameplay-fixes

Group only actual gameplay corrections:

  • Crafting logic fixes
  • Inventory and duplication prevention
  • Trade corrections
  • Zen handling
  • NPC interactions
  • Attribute and calculation corrections
  • Documentation belonging to each mechanic

Recommended further split (very likely required):

  • feature/gameplay-crafting
  • feature/gameplay-inventory
  • feature/gameplay-trade
  • feature/gameplay-attributes
  • feature/gameplay-npc
  • feature/gameplay-zen

Rationale:
These are different risk domains and require focused reviews.


6. Logging Infrastructure

feature/logging-infrastructure

  • In-memory log buffer and sinks
  • Console logging utilities
  • Program.cs logging adjustments
  • Admin LogTail pages and widgets
  • Diagnostics configuration
  • Logging documentation

7. Network Protocol

feature/network-packets

  • Packet updates for item crafting result
  • Server-to-client definitions
  • Protocol-related tests
  • Packet change documentation

Rationale:
Protocol contracts must never be mixed with feature logic.


8. Docker Setups

feature/docker-improvements

  • Docker compose variants and overlays
  • NGINX setups
  • Port overrides
  • Only container/deployment concerns
  • Docker documentation

9. Suggested Merge Order

  1. feature/localization-core
  2. feature/adminpanel-localization
  3. feature/logging-infrastructure
  4. feature/events-game-data
  5. feature/summon-refactor
  6. Gameplay sub-branches
  7. feature/network-packets
  8. feature/docker-improvements

10. Rules for Future Contributions

  • One branch = one responsibility
  • No mixing of:
    • UI and gameplay logic
    • Database initialization and mechanics
    • Packets and Admin features

Target pull request size:

  • 10–25 files
  • < 800 lines when possible
  • Single domain affected
  • Tests and docs travel with the feature

11. Branch Proposal Summary

  • feature/localization-core
  • feature/adminpanel-localization
  • feature/summon-refactor
  • feature/events-game-data
  • feature/gameplay-* (multiple mechanic branches expected)
  • feature/logging-infrastructure
  • feature/network-packets
  • feature/docker-improvements

Concrete Actions for the Author

  • Create feature/localization-core as first PR including its docs
  • Move gameplay fixes into dedicated mechanic branches with their own documentation
  • Extract logging and Docker completely
  • Isolate networking packet updates
  • Keep reviews focused and incremental

@sven-n
Copy link
Member

sven-n commented Jan 6, 2026

Okay, how should I start 😅 To make it short: In it's current form I can't merge it. I can use it as a collection of features/ideas which I might merge or not.
If you wish to contribute in a more helpful way, please create one branch and pull request for each feature. That way we can discuss the solutions seperately which benefits both of us.

I didn't come far with the review (very hard to identify which change belongs to which feature), but what I can already tell:

  • I'll handle localization with my currently Draft-PR Multilanguage support #682. I want to be able to use existing tools to edit *.resx files. Also localized readmes doesn't make sense to me, since translation is a solved problem in every browser.
  • Admin Panel: The log tail is interesting, however I had something similar a while back. The code for that looks a bit strange, because the log files seem to be downloaded over http by the server from the server.
  • Summon configuration/plugins: I'd prefer a more generic approach instead of a lot of specific code. I'll write a issue with my ideas for the copilot when I have time.
  • I want to keep the OpenMU mostly original after a initialization. Custom features (e.g. Zyro for inventory expansion) could be made available through plugin activation.
  • Network packets should be constructed by the generated packet structures (e.g. ShowHitPlugIn097). If a new packet is required, it must be added to the packet definition xml file.

@EmanuelCatania
Copy link
Author

Ignore the PR; I forgot to mark it as closed. There are several things I'm reviewing, and I currently want to get it properly connected to version 0.97k. I removed Logtail for the reason you mentioned; when I integrated it, I needed a real-time console, but it caused more problems in the long run because I implemented it too quickly. The localization issue wasn't for the front end to be translated, but for in-game text. And my testing environment isn't on the same machine I use for programming. There are many commits to fix build errors. Once I migrate the project to a clean repository, I'll release a PR; for now, ignore it.

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.

4 participants