<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.dragonminez.com/index.php?action=history&amp;feed=atom&amp;title=Translations%3AImplementation_and_Events%2F142%2Fen</id>
	<title>Translations:Implementation and Events/142/en - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dragonminez.com/index.php?action=history&amp;feed=atom&amp;title=Translations%3AImplementation_and_Events%2F142%2Fen"/>
	<link rel="alternate" type="text/html" href="https://wiki.dragonminez.com/index.php?title=Translations:Implementation_and_Events/142/en&amp;action=history"/>
	<updated>2026-10-26T01:06:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.dragonminez.com/index.php?title=Translations:Implementation_and_Events/142/en&amp;diff=5172&amp;oldid=prev</id>
		<title>FuzzyBot: Importing a new version from external source</title>
		<link rel="alternate" type="text/html" href="https://wiki.dragonminez.com/index.php?title=Translations:Implementation_and_Events/142/en&amp;diff=5172&amp;oldid=prev"/>
		<updated>2026-10-13T05:26:48Z</updated>

		<summary type="html">&lt;p&gt;Importing a new version from external source&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;* Objective classes extend &amp;lt;code&amp;gt;QuestObjective&amp;lt;/code&amp;gt; and call the &amp;lt;code&amp;gt;QuestObjective(String customType, int required)&amp;lt;/code&amp;gt; constructor; reward classes extend &amp;lt;code&amp;gt;QuestReward&amp;lt;/code&amp;gt;, call &amp;lt;code&amp;gt;QuestReward(String customType)&amp;lt;/code&amp;gt; and implement &amp;lt;code&amp;gt;giveReward(ServerPlayer)&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;getDescription()&amp;lt;/code&amp;gt;. Objectives must also implement &amp;lt;code&amp;gt;checkProgress(Object... params)&amp;lt;/code&amp;gt;.&lt;br /&gt;
* In quest JSON, use your key as the &amp;lt;code&amp;gt;&amp;quot;type&amp;quot;&amp;lt;/code&amp;gt; (for example &amp;lt;code&amp;gt;{&amp;quot;type&amp;quot;: &amp;quot;MEDITATE&amp;quot;, &amp;quot;seconds&amp;quot;: 60}&amp;lt;/code&amp;gt;). Type keys are case-insensitive (stored in upper case). Treat them like registry names: don&amp;#039;t rename them once quests use them.&lt;br /&gt;
* The sync writer must write every field your factory reads, because the client parses the synced JSON again with your factory.&lt;br /&gt;
* Unknown types are reported in the JSON load report (see [[Special:MyLanguage/Developer Scope and Prerequisites#Finding JSON mistakes|Finding JSON mistakes]]) and the objective or reward is skipped.&lt;br /&gt;
* Progress is server-authoritative and event-driven: listen to your own game events on the server and store progress with &amp;lt;code&amp;gt;PlayerQuestData.setObjectiveProgress(questKey, objectiveIndex, progress)&amp;lt;/code&amp;gt;, then sync with &amp;lt;code&amp;gt;ProgressionSyncS2C&amp;lt;/code&amp;gt;. Use &amp;lt;code&amp;gt;DMZEvent.QuestObjectiveProgressEvent&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;QuestCompletedEvent&amp;lt;/code&amp;gt; to react to built-in quests.&lt;/div&gt;</summary>
		<author><name>FuzzyBot</name></author>
	</entry>
</feed>