In this update, a new race has been added – goblins! Additionally, I've paid more attention to the bugs that you are reporting. Thank you for helping to make the plugin better.
Bug Fixes
- Fixed a bug with the incorrect random range when choosing a voice for the human race.
- Minor fixes related to debugging and error logging.
- Attempted to fix an unclear inventory bug. Now, if a villager's inventory is processed incorrectly, a new one will be created.
- Minor improvements to config.yml.
- Now the NPC interaction menu opens on the first click.
- Code cleanup. Now illager banners cannot be worn on the head, as the friendly illager feature was removed two patches ago!
- Damage sound is no longer played if the player skips dialogue.
- Improved the logic of modified creature scaling. The scale of small creatures is modified genuinely, while the scale of large creatures (e.g., orcs) is changed only through packets. This is done so that creatures above scale 1.0 can pass through doorways.
- Fixed the prompt rule hack. Now, villagers of certain personality types can again swear, bypassing the neural network's censorship.
Additions
- Added a check for the presence of the RealisticVillagers plugin. If this plugin is on the server, QuestIntelligence will turn off, as these plugins are incompatible.
- New race: goblins.
- New value in config.yml:
core-settings.swearing
. Not everyone may like swearing villagers (the plugin has an "easter egg" due to which villagers of the DRUNKARD and ANGRY types can swear in their phrases), so I added the ability to disable this feature. Perhaps you are a moralist, or host a server for your children, so I decided that such a feature must have a disable option.
QuestIntelligence goes into beta! In this patch: bug fixes, trade rebalancing and completely new mechanics! Delete old config files.
- Humanoids (or simply NPCs) have been added. Villager models are replaced with player models. Now villagers have skins, and also races. Currently, they do not have modified behavior and behave like ordinary villagers, but in the future, I plan to teach them to fight, etc. You might have seen a similar mechanic in the RealisticVillagers plugin. Initially, my goal was to create a compatibility patch with this plugin, but due to the architecture of RealisticVillagers, this turned out to be impossible. After that, I wanted to create a modification of this plugin specifically for QuestIntelligence. Studying the code of RealisticVillagers, I discovered that I really didn't like it, and getting quite angry, I decided to write my own implementation of this mechanic. From scratch.
- Four races: dwarves, orcs, elves and humans. The races.yml file contains all settings related to this mechanic. Races have unique attributes, voice, skins, starting items, base reputation, and more.
- The skins.yml file has been added. It contains all the skins that will be used by the plugin. Some skins may look odd, but I will fix this in the future. If you have a desire to help the project, then you can send good skins and I will add them to the plugin. More information can be found on our Discord server.
- Significant code improvements. Refactoring, architecture rework, removal of dubious mechanics (for example, friendly illagers).
- Humanoid voices can now be configured in races.yml. Yes, each race has its own voice. For example, orcs have low and raspy voices.
- Basic villager voices (ambient, damage taken, and death) have been replaced with custom ones from races.yml.
- Improved trading formula. Now, during trading, the second slot will be used!
- In addition, each race has been given its own currency. Now, instead of emeralds as a universal currency, each race uses something of its own. For example, dwarves use diamonds (yes, they are very wealthy).
- Trade rebalance. The balance of trade is far from perfect, but it feels a little more logical now.
Bug fixes:
- Fixed the display of the reward name in villager dialogue. Previously, the reward was described in uppercase. Now it's not.
- Fixed the logic of settlement creation where the plugin would find villagers without a settlement and create a new one, even though they were within an existing settlement. Villagers who find themselves within the territory of existing settlements (or nearby) are automatically added to it and head towards the center.
- Added a limit for newcomers in settlements.
- Added a limit for illager party sizes.
Changes:
- Changed the version support policy. Now the plugin only works on one Minecraft version — the latest one. Currently, this is 1.21.4. I want to focus on adding and improving content, rather than fixing bugs that arise due to differences between versions (believe me, there are many such bugs, as the plugin already actively uses NMS, and there will be even more in the future). So if you want to use my plugin — please update your server. However, the plugin has an open source code – you can port it to the version you need yourself.
- Improved the algorithm for generating villager personal dates. Now the villager's personality type is taken into account, resulting in their names sometimes being "meaningful".
- Added a mechanism for replenishing settlements. If a settlement has enough free beds, new villagers will sometimes arrive in it.
- I've decided to remove some mechanics: some temporarily, others most likely permanently. Like tutorial or control panel of the villages. Some features will come back closer to (or in) beta stage.
- Added a message to announce entering/leaving a village.
Ominous Update
Hey! Another update is on the way. In this update, I've greatly improved the name generation prompts, added more features to the configuration, and most importantly, completely reworked the player-and-illager interactions, which makes having a bad reputation actually meaningful. Illagers won't attack players with bad reputation, but will talk to them (treating them friendly), and even protect them from monsters. In addition, such players can now wear ominous banners as a helmet. Illagers will consider such players as their leaders and follow them.
Bug fixes
- Fixed a bug where Markdown was used in quest titles.
- Fixed the ominous banner description when generating a quest related to obtaining it. Now villagers don't just talk about a white banner, but an ominous one.
Changes
- Significant improvements to the name generation prompts for villagers and settlements. Now, instead of strange names, the AI will generate interesting and beautiful names, avoiding repetitions. This is achieved because the plugin now saves all previously used names and informs the AI, prohibiting their reuse.
- The naming style setting has been moved from prompts.yml to config.yml. The default naming style is now Fantasy, but you can actually use anything.
- Added profession quests for nitwit villagers. These poor guys have been without quests for a long time; now they ask the player to bring them various junk.
- Improved the quest generation prompt: information about the quantity of the quest item is added to the context. Now villagers mention the required quantity of the requested item (before, they always described it in the singular).
- Iron golems will now attack players with a very bad reputation. The golem will choose the nearest player with bad reputation, and if the player runs away far enough, the golem will stop chasing them.
- Illagers will no longer attack players with a very bad reputation, mistaking them for their own.
- Added a new type of dialogue: illagers. A player with a very bad reputation can interact with pillagers, receiving phrases in response. Unlike personal phrases for each villager, pillager phrases are generated each time the server starts – they are common to all illagers and are randomly selected from a common pool. There are also phrases for when such a player attacks an illager, thereby betraying them. Since illagers aren't the nicest bunch, their replies can be... more colorful.
- Now, when illagers spawn, they get ominous names.
- Illagers protect players with a bad reputation from monsters. For example, if a zombie (or even a creeper!) aggroes onto the player, the illager will attack the attacking monster.
- Players with a bad reputation can put ominous banners on their heads. Other illagers will follow such a player, considering them the squad leader. The player can even lead them into a village! Illagers will attack the same targets as the player, protecting them from monsters. Illagers talk to such players with special phrases intended for the leader.
Dialogues Update
Bug Fixes:
- Text displays now render correctly; villagers and other objects are no longer visible through them.
Changes:
- Added a new type of dialogue for children. When a player interacts with a child, the child will respond with a phrase (from a list) that depends on the player's fame.
- Added a new type of dialogue for villagers who have profession but no quests for the player.
- Killing villagers' children is now penalized twice as harshly (configurable), significantly reducing fame and respect.
- The action menu no longer opens when interacting with children villager.
- Dialogues with children now display correctly.
- The plugin's prefix has been updated to a more minimalist style.
- Improved styling of messages in
language.yml
for better appearance (probably). - Further enhanced dialogue presentation — important and emotional words are now highlighted, improving text perception even more.
- Added options to configure the size, color, and transparency of dialogue windows in
config.yml
. - Villagers now eat at staggered intervals instead of all at once.
- Significantly improved visibility of the immersive dialogue window.
- New personality type: CHILDLIKE.
Reputation Update
Bug Fixes
- Villager Spawn Fix: Villagers now properly load into their settlements after server startup.
- No More Random Unique Items: AI-generated unique items will no longer appear out of nowhere. Problem solved!
- Villager Info GUI: Hunger levels and professions are now displayed correctly in the villager information interface.
- Language File Loading: The language file now loads immediately when the plugin initializes, ensuring there are no NPE.
- Improved Reload Command: The
/q reload
command now correctly reloads the language file.
Changes
-
Reputation System Added: Reputation now affects prices, relationships with villagers, and some game mechanics (some of which are yet to be implemented). Reputation is divided into two types: Respect and Fame.
- Fame is a more global type of reputation. If the player performs good deeds, completes quests, trades with villagers, or kills monsters and Illagers, villagers will lower their prices and greet the player more warmly. On the other hand, if the player kills villagers or players (especially those with high Fame, particularly in villages), villagers will dislike (or even hate) the player, raising prices or outright refusing to trade. Discounts from high Fame also apply to villager services.
- Respect is a local reputation, unique to each villager. Respect influences player-villager relationships just like Fame but on a local level for each village. A player may have a great reputation in one village but be completely unknown in another.
-
Improved Dialogues: Villagers now converse with the player based on their Fame.
- If the player is famous, they will be greeted as a hero, with warm and detailed quest explanations.
- If the player is neutral, villagers will treat them neutrally, as they would any ordinary traveler.
- If the player is infamous, villagers will speak to them disrespectfully, making it clear they are unwelcome in the area. Now that's immersion, huh?
-
Quest Completion Dialogues: The phrases villagers use when the player completes a quest now also depend on the player's reputation.
-
New Interaction Responses: If the player’s reputation is REALLY low, villagers will outright refuse to interact or trade with them. Politely put, they’ll send the player packing. Heh.
-
New Command:
/q fame set <player> <amount>
allows modifying any player's Fame value. -
Updated config.yml: The formula for calculating final prices with reputation modifiers can now be easily adjusted, giving you more control over balance.
-
Improved Text Display in Dialog Windows: Important words are now highlighted in configurable colors, making the AI-generated verbosity much more readable! Names and objectives are now immediately noticeable. Additionally, text color in dialog windows is finally customizable.
And, just usual.. Old configs.. yeah, delete them. xD
Settlements Update
- Settlements have been added. Settlements are created automatically, without player involvement: QuestIntelligence constantly searches for clusters of villagers (for example, naturally generated villages or player bases) and establishes a settlement. Names for settlements are generated using AI. These names are then used when generating quests, unique items, and other things.
- A settlement management panel has been added. If you click on the bell while inside a settlement, the management menu will open. In it, you can find various buttons (some of them don’t do anything yet, this is content for future updates). In this menu, you can find basic information about the villagers in the village (even take a look at them in list form), the number of beds, food, and more. Functionality will be gradually expanded.
- Commands related to settlements have been added: /q settlement list, /q settlement teleport. I hope it’s unnecessary to explain what they do?
- QuestIntelligence now uses the new Gemini model.
- Improved parsing of generated dialogues (now ellipses and pauses between them are always displayed correctly).
- Holiday events have been added.
Merry Christmas and Happy New Year!
Accessibility Update
- "allowed-potion-types" for booze quest is configurable now.
- Added modes to display villagers' dialogs in chat as if they were messages from players.
- Added the command “/q dialogue format <IMMERSIVE/CHAT/BOTH>”. This command allows each player to choose the message display method they prefer.
- A new key related to messages from villagers to players has been added to translate.yml.
- A new key has been added to config.yml related to the default way of displaying dialogs. (IMMERSIVE of course)
- Fixed several bugs related to NullPointerException after using “/q reload” command. It is still not recommended to use this command.
- The plugin structure has been changed to multimodular (jeez, I had to mess around with gradle long enough). Now the plugin works on the following versions: 1.20.6, 1.21.1, 1.21.3. Bugs are possible, so please report them to Discord. Support for other versions and backports are on the way.