diff --git a/2.5DHero/2.5DHero/DataModel/IDataModelContainer.vb b/2.5DHero/2.5DHero/DataModel/IDataModelContainer.vb
new file mode 100644
index 000000000..05d1e6770
--- /dev/null
+++ b/2.5DHero/2.5DHero/DataModel/IDataModelContainer.vb
@@ -0,0 +1,15 @@
+Namespace DataModel
+
+ '''
+ ''' An interface for objects that implement a datamodel.
+ '''
+ Public Interface IDataModelContainer
+
+ '''
+ ''' Gets and/or sets the data model.
+ '''
+ ReadOnly Property DataModel As Json.JsonDataModel
+
+ End Interface
+
+End Namespace
diff --git a/2.5DHero/2.5DHero/DataModel/Json/ContentPack/ContentPack.vb b/2.5DHero/2.5DHero/DataModel/Json/ContentPack/ContentPack.vb
new file mode 100644
index 000000000..4a80fca62
--- /dev/null
+++ b/2.5DHero/2.5DHero/DataModel/Json/ContentPack/ContentPack.vb
@@ -0,0 +1,22 @@
+Imports System.Runtime.Serialization
+
+Namespace DataModel.Json.ContentPack
+
+
+ Public Class ContentPackModel
+
+
+ Public Name As String
+
+
+ Public Version As String
+
+
+ Public Author As String
+
+
+ Public Description As String
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/2.5DHero/2.5DHero/DataModel/Json/EntityPropertyExtension.vb b/2.5DHero/2.5DHero/DataModel/Json/EntityPropertyExtension.vb
new file mode 100644
index 000000000..58036a3b5
--- /dev/null
+++ b/2.5DHero/2.5DHero/DataModel/Json/EntityPropertyExtension.vb
@@ -0,0 +1,49 @@
+Namespace DataModel.Json
+
+ Class EntityPropertyExtension
+
+ Private _entityModel As Game.EntityModel
+
+ Public Sub New(ByVal entityModel As Game.EntityModel)
+ _entityModel = entityModel
+ End Sub
+
+ Private Property _PropertyValue(ByVal propertyName As String) As String
+ Get
+ For Each p As Game.EntityModel.PropertyDataModel In _entityModel.Properties
+ If p.Name = propertyName Then
+ Return p.Value
+ End If
+ Next
+ Return ""
+ End Get
+ Set(value As String)
+ For Each p As Game.EntityModel.PropertyDataModel In _entityModel.Properties
+ If p.Name = propertyName Then
+ p.Value = value
+ End If
+ Next
+ End Set
+ End Property
+
+#Region "Converters"
+
+ Private Function Bool(ByVal s As String) As Boolean
+ Return Boolean.Parse(s)
+ End Function
+
+#End Region
+
+#Region "Floor"
+
+ Public ReadOnly Property HasIce() As Boolean
+ Get
+ Return Bool(_PropertyValue("HasIce"))
+ End Get
+ End Property
+
+#End Region
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/2.5DHero/2.5DHero/DataModel/Json/Game/Item.vb b/2.5DHero/2.5DHero/DataModel/Json/Game/Item.vb
new file mode 100644
index 000000000..fe95aaa2e
--- /dev/null
+++ b/2.5DHero/2.5DHero/DataModel/Json/Game/Item.vb
@@ -0,0 +1,210 @@
+Imports System.Runtime.Serialization
+
+Namespace DataModel.Json.Game
+
+ '''
+ ''' The data model of an item.
+ '''
+
+ Public Class ItemModel
+
+ Inherits JsonDataModel
+
+
+ Public Name As String
+
+
+ Public PluralName As String
+
+
+ Public Price As Integer
+
+
+ Public Id As Integer
+
+
+ Public Texture As TextureSourceModel
+
+
+ Public Description As String
+
+
+ Public ScriptBinding As String
+
+
+ Public InventoryDefinition As InventoryDefinitionModel
+
+
+ Public Usage As ItemUsageModel
+
+
+ Public Classification As ItemClassificationModel
+
+
+ Public Berry As BerryModel
+
+
+ Public Megastone As MegastoneModel
+
+
+ Public Plate As PlateModel
+
+
+ Public TechnicalMachine As TechnicalMachineModel
+
+
+ Public Class TechnicalMachineModel
+
+
+ Public MoveId As Integer
+
+
+ Public IsTM As Boolean
+
+ End Class
+
+
+ Public Class PlateModel
+
+
+ Private TypeStr As String
+
+ Public Property Type() As Element
+ Get
+ Return New Element(TypeStr)
+ End Get
+ Set(value As Element)
+ TypeStr = value.ToString()
+ End Set
+ End Property
+
+ End Class
+
+
+ Public Class MegastoneModel
+
+
+ Public MegaPokemonNumber As Integer
+
+ End Class
+
+
+ Public Class BerryModel
+
+ Inherits JsonDataModel
+
+
+ Public PhaseTime As Integer
+
+
+ Public Size As String
+
+
+ Public Firmness As String
+
+
+ Public MinBerries As Integer
+
+
+ Public MaxBerries As Integer
+
+
+ Private FlavourStr As String
+
+ Public Property Flavour() As Items.Berry.Flavours
+ Get
+ Return ConvertStringToEnum(Of Items.Berry.Flavours)(FlavourStr)
+ End Get
+ Set(value As Items.Berry.Flavours)
+ FlavourStr = value.ToString()
+ End Set
+ End Property
+
+
+ Private TypeStr As String
+
+ Public Property Type() As Element
+ Get
+ Return New Element(TypeStr)
+ End Get
+ Set(value As Element)
+ TypeStr = value.ToString()
+ End Set
+ End Property
+
+
+ Public Power As Integer
+
+ End Class
+
+
+ Public Class ItemClassificationModel
+
+
+ Public IsBall As Boolean
+
+
+ Public IsBerry As Boolean
+
+
+ Public IsHealingItem As Boolean
+
+
+ Public IsMail As Boolean
+
+
+ Public IsMegastone As Boolean
+
+
+ Public IsPlate As Boolean
+
+ End Class
+
+
+ Public Class ItemUsageModel
+
+
+ Public InBattle As Boolean
+
+
+ Public Overworld As Boolean
+
+
+ Public Trade As Boolean
+
+
+ Public Held As Boolean
+
+
+ Public Toss As Boolean
+
+ End Class
+
+
+ Public Class InventoryDefinitionModel
+
+ Inherits JsonDataModel
+
+
+ Private TypeStr As String
+
+ Public Property Type() As Item.ItemTypes
+ Get
+ Return ConvertStringToEnum(Of Item.ItemTypes)(TypeStr)
+ End Get
+ Set(value As Item.ItemTypes)
+ TypeStr = value.ToString()
+ End Set
+ End Property
+
+
+ Public MaxStack As Integer
+
+
+ Public SortValue As Integer
+
+ End Class
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/2.5DHero/2.5DHero/DataModel/Json/Game/MainMenuMap.vb b/2.5DHero/2.5DHero/DataModel/Json/Game/MainMenuMap.vb
new file mode 100644
index 000000000..2f52740b5
--- /dev/null
+++ b/2.5DHero/2.5DHero/DataModel/Json/Game/MainMenuMap.vb
@@ -0,0 +1,16 @@
+Imports System.Runtime.Serialization
+
+Namespace DataModel.Json.Game
+
+
+ Public Class MainMenuMapModel
+
+
+ Public Mapfile As String
+
+
+ Public Offset As Vector3Model
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/2.5DHero/2.5DHero/DataModel/Json/Game/MapModel.vb b/2.5DHero/2.5DHero/DataModel/Json/Game/MapModel.vb
new file mode 100644
index 000000000..590936cc2
--- /dev/null
+++ b/2.5DHero/2.5DHero/DataModel/Json/Game/MapModel.vb
@@ -0,0 +1,375 @@
+Imports System.Runtime.Serialization
+
+Namespace DataModel.Json.Game
+
+
+ Class MapModel
+
+ Inherits JsonDataModel
+
+
+ Public Name As String
+
+
+ Public Region As String
+
+
+ Public Song As String
+
+
+ Public CanTeleport As Boolean
+
+
+ Public CanDig As Boolean
+
+
+ Public CanFly As Boolean
+
+
+ Public MapScriptBinding As String
+
+
+ Public EnvironmentType As Integer
+
+
+ Public WeatherType As Integer
+
+
+ Public LightType As Integer
+
+
+ Public RideType As Integer
+
+
+ Public IsDark As Boolean
+
+
+ Private TerrainStr As String
+
+ Public Property Terrain() As Terrain.TerrainTypes
+ Get
+ Return ConvertStringToEnum(Of Terrain.TerrainTypes)(TerrainStr)
+ End Get
+ Set(value As Terrain.TerrainTypes)
+ TerrainStr = value.ToString()
+ End Set
+ End Property
+
+
+ Public IsSafariZone As Boolean
+
+
+ Public IsBugCatchingContest As Boolean
+
+
+ Public AllowedRadioChannels As Decimal()
+
+
+ Public BattleMapData As BattleMapDataModel
+
+
+ Public WildPokemonFloor As Boolean
+
+
+ Public ShowOverworldPokemon As Boolean
+
+
+ Public HiddenAbilityChance As Integer
+
+
+ Public Entities As EntityFieldModel()
+
+
+ Public NPCs As NPCModel()
+
+
+ Public OffsetMaps As OffsetMapModel()
+
+
+ Public Shaders As ShaderModel()
+
+
+ Public Backdrops As BackdropModel()
+
+
+ Public Structures As StructureModel()
+
+
+ Class BattleMapDataModel
+
+
+ Public BattleMapfile As String
+
+
+ Public StartPosition As Vector3Model
+
+ End Class
+
+
+ Class EntityFieldModel
+
+
+ Public Placing As EntityFieldPositioningModel()
+
+
+ Public Entity As EntityModel
+
+ Public Class EntityFieldPositioningModel
+
+
+ Public Position As Vector3Model
+
+
+ Public Size As Vector3Model
+
+
+ Public Fill As Boolean
+
+
+ Public Steps As Vector3Model
+
+ End Class
+
+ End Class
+
+ End Class
+
+
+ Class EntityModel
+
+ Inherits JsonDataModel
+
+
+ Public Id As Integer
+
+
+ Public Rotation As Vector3Model
+
+
+ Public TakeFullRotation As Boolean
+
+
+ Public Scale As Vector3Model
+
+
+ Public RenderMode As EntityRenderModeModel
+
+
+ Public Collision As Boolean
+
+
+ Public IsFloor As Boolean
+
+
+ Public SeasonConfiguration As EntitySeasonConfigurationModel
+
+
+ Public Properties As PropertyDataModel()
+
+
+ Public Class EntitySeasonConfigurationModel
+
+ Inherits JsonDataModel
+
+
+ Public TexturePath As String
+
+
+ Private ActiveSeasonsStr As String()
+
+ Public Property ActiveSeasons() As World.Seasons()
+ Get
+ Return ConvertStringArrayToEnumArray(Of World.Seasons)(ActiveSeasonsStr)
+ End Get
+ Set(value As World.Seasons())
+ ActiveSeasonsStr = ConvertEnumArrayToStringArray(value)
+ End Set
+ End Property
+
+ End Class
+
+
+ Public Class PropertyDataModel
+
+
+ Public Name As String
+
+
+ Public Value As String
+
+ End Class
+
+ End Class
+
+
+ Public Class NPCModel
+
+ Inherits JsonDataModel
+
+
+ Public Id As Integer
+
+
+ Public Position As Vector3Model
+
+
+ Public Skin As String
+
+
+ Public Name As String
+
+
+ Public Facing As Integer
+
+ 'TODO: Add enum
+
+ Public Movement As String
+
+
+ Public MoveRectangles As RectangleModel()
+
+
+ Public SightDistance As Integer
+
+
+ Public IsTrainer As Boolean
+
+
+ Public ScriptBinding As String
+
+ End Class
+
+
+ Public Class OffsetMapModel
+
+
+ Public Offset As Vector3Model
+
+
+ Public MapFile As String
+
+ End Class
+
+
+ Class EntityRenderModeModel
+
+ Inherits JsonDataModel
+
+
+ Private RenderMethodStr As String
+
+ Public Property RenderMethod() As GameModes.Maps.EntityRenderMode
+ Get
+ Return ConvertStringToEnum(Of GameModes.Maps.EntityRenderMode)(RenderMethodStr)
+ End Get
+ Set(value As GameModes.Maps.EntityRenderMode)
+ RenderMethodStr = value.ToString()
+ End Set
+ End Property
+
+#Region "PrimitiveRenderMode"
+
+
+ Public Textures As TextureSourceModel()
+
+
+ Public TextureIndex As Integer()
+
+
+ Public PrimitiveModelId As Integer
+
+
+ Public RenderBackfaces As Boolean
+
+#End Region
+
+#Region "ModelRenderMode"
+
+
+ Public ModelPath As String
+
+#End Region
+
+
+ Public Visible As Boolean
+
+
+ Public Opacity As Decimal
+
+
+ Public Shader As Vector3Model
+
+
+ Public ObstructCamera As Boolean
+
+ End Class
+
+
+ Public Class ShaderModel
+
+ Inherits JsonDataModel
+
+
+ Public Size As Vector3Model
+
+
+ Public Shader As Vector3Model
+
+
+ Public Position As Vector3Model
+
+
+ Public StopOnContact As Boolean
+
+
+ Private DaytimesStr As String()
+
+ Public Property Daytimes() As World.DayTime()
+ Get
+ Return ConvertStringArrayToEnumArray(Of World.DayTime)(DaytimesStr)
+ End Get
+ Set(value As World.DayTime())
+ DaytimesStr = ConvertEnumArrayToStringArray(value)
+ End Set
+ End Property
+
+ End Class
+
+
+ Public Class BackdropModel
+
+
+ Public Size As Vector2Model
+
+
+ Public Position As Vector3Model
+
+
+ Public Rotation As Vector3Model
+
+
+ Public Type As String
+
+
+ Public Texture As TextureSourceModel
+
+
+ Public Trigger As String
+
+ End Class
+
+
+ Public Class StructureModel
+
+
+ Public Offset As Vector3Model
+
+
+ Public MapFile As String
+
+
+ Public AddNPCs As Boolean
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/2.5DHero/2.5DHero/DataModel/Json/Game/PrimitiveModel.vb b/2.5DHero/2.5DHero/DataModel/Json/Game/PrimitiveModel.vb
new file mode 100644
index 000000000..510a391c5
--- /dev/null
+++ b/2.5DHero/2.5DHero/DataModel/Json/Game/PrimitiveModel.vb
@@ -0,0 +1,27 @@
+Namespace DataModel.Json.Game
+
+ '''
+ ''' A data model for a primitive model.
+ '''
+ Public Class PrimitiveModel
+
+ Inherits JsonDataModel
+
+ Public Vertices As VertexPositionNormalTextureModel()
+
+ End Class
+
+ '''
+ ''' A data model for a .
+ '''
+ Public Class VertexPositionNormalTextureModel
+
+ Inherits JsonDataModel
+
+ Public Position As Vector3Model
+ Public Normal As Vector3Model
+ Public TextureCoordinate As Vector2Model
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/2.5DHero/2.5DHero/DataModel/Json/Game/Trainer.vb b/2.5DHero/2.5DHero/DataModel/Json/Game/Trainer.vb
new file mode 100644
index 000000000..7967146e1
--- /dev/null
+++ b/2.5DHero/2.5DHero/DataModel/Json/Game/Trainer.vb
@@ -0,0 +1,128 @@
+Imports System.Runtime.Serialization
+
+Namespace DataModel.Json.Game
+
+ '''
+ ''' The data model for a trainer definition.
+ '''
+
+ Public Class TrainerModel
+
+ Inherits JsonDataModel
+
+
+ Public Name As String
+
+
+ Public [Class] As String
+
+
+ Public Money As Integer
+
+
+ Public Messages As TrainerMessagesModel
+
+
+ Public Songs As TrainerMusicModel
+
+
+ Public Skin As String
+
+
+ Public Region As String
+
+
+ Public Pokemon As TrainerPokemonModel()
+
+
+ Public Items As Integer()
+
+
+ Private GenderStr As String
+
+ Public Property Gender As Pokemon.Genders
+ Get
+ Return ConvertStringToEnum(Of Pokemon.Genders)(GenderStr)
+ End Get
+ Set(value As Pokemon.Genders)
+ GenderStr = value.ToString()
+ End Set
+ End Property
+
+
+ Public AI As Integer
+
+
+ Public Intro As TrainerIntroSequenceModel
+
+ '''
+ ''' The data model for a trainer VS intro.
+ '''
+
+ Public Class TrainerIntroSequenceModel
+
+
+ Public VSType As String
+
+
+ Public BarType As String
+
+ End Class
+
+ '''
+ ''' The data model for a trainer's Pokémon data.
+ '''
+
+ Public Class TrainerPokemonModel
+
+
+ Public HasFullData As Boolean
+
+
+ Public Level As Integer
+
+
+ Public Number As Integer
+
+
+ Public Data As PlayerData.PokemonDataModel
+
+ End Class
+
+ '''
+ ''' The data model for a trainer's messages.
+ '''
+
+ Public Class TrainerMessagesModel
+
+
+ Public Intro As String
+
+
+ Public Outro As String
+
+
+ Public Defeat As String
+
+ End Class
+
+ '''
+ ''' The data model for a trainer's music model
+ '''
+
+ Public Class TrainerMusicModel
+
+
+ Public Intro As String
+
+
+ Public Defeat As String
+
+
+ Public Battle As String
+
+ End Class
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/2.5DHero/2.5DHero/DataModel/Json/GameJolt/BanList.vb b/2.5DHero/2.5DHero/DataModel/Json/GameJolt/BanList.vb
new file mode 100644
index 000000000..e3c0a4384
--- /dev/null
+++ b/2.5DHero/2.5DHero/DataModel/Json/GameJolt/BanList.vb
@@ -0,0 +1,33 @@
+Imports System.Runtime.Serialization
+
+Namespace DataModel.Json.GameJolt
+
+ '''
+ ''' An entry of the GameJolt ban list.
+ '''
+
+ Public Class BanListEntryModel
+
+
+ Public GameJoltId As String 'For future compatibility, we use string instead of int.
+
+
+ Public BanReason As Integer
+
+ End Class
+
+ '''
+ ''' An entry of the GameJolt ban reason list.
+ '''
+
+ Public Class BanReasonEntryModel
+
+
+ Public Id As Integer
+
+
+ Public Reason As String
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/2.5DHero/2.5DHero/DataModel/Json/GameJolt/DataStorage.vb b/2.5DHero/2.5DHero/DataModel/Json/GameJolt/DataStorage.vb
new file mode 100644
index 000000000..12f3c6e7c
--- /dev/null
+++ b/2.5DHero/2.5DHero/DataModel/Json/GameJolt/DataStorage.vb
@@ -0,0 +1,29 @@
+Imports System.Runtime.Serialization
+
+Namespace DataModel.Json.GameJolt
+
+
+ Public Class DataStorageResponseModel
+
+ Inherits JsonDataModel
+
+
+ Public response As DataStorageModel
+
+
+ Public Class DataStorageModel
+
+
+ Public success As String
+
+
+ Public data As String
+
+
+ Public message As String
+
+ End Class
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/2.5DHero/2.5DHero/DataModel/Json/GameJolt/UserData.vb b/2.5DHero/2.5DHero/DataModel/Json/GameJolt/UserData.vb
new file mode 100644
index 000000000..1c68d9a41
--- /dev/null
+++ b/2.5DHero/2.5DHero/DataModel/Json/GameJolt/UserData.vb
@@ -0,0 +1,64 @@
+Imports System.Runtime.Serialization
+
+Namespace DataModel.Json.GameJolt
+
+
+ Public Class UserDataResponseModel
+
+ Inherits JsonDataModel
+
+
+ Public response As UserDataCollectionModel
+
+
+ Public Class UserDataCollectionModel
+
+
+ Public success As String
+
+
+ Public users As UserDataModel()
+
+
+ Public Class UserDataModel
+
+
+ Public message As String
+
+
+ Public id As String
+
+
+ Public type As String
+
+
+ Public username As String
+
+
+ Public avatar_url As String
+
+
+ Public signed_up As String
+
+
+ Public last_logged_in As String
+
+
+ Public status As String
+
+
+ Public developer_name As String
+
+
+ Public developer_website As String
+
+
+ Public developer_description As String
+
+ End Class
+
+ End Class
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/2.5DHero/2.5DHero/DataModel/Json/GameJolt/VerifyUser.vb b/2.5DHero/2.5DHero/DataModel/Json/GameJolt/VerifyUser.vb
new file mode 100644
index 000000000..44e7d024d
--- /dev/null
+++ b/2.5DHero/2.5DHero/DataModel/Json/GameJolt/VerifyUser.vb
@@ -0,0 +1,26 @@
+Imports System.Runtime.Serialization
+
+Namespace DataModel.Json.GameJolt
+
+
+ Public Class VerifyUserResponseModel
+
+ Inherits JsonDataModel
+
+
+ Public response As VerifyUserModel
+
+
+ Public Class VerifyUserModel
+
+
+ Public success As String
+
+
+ Public message As String
+
+ End Class
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/2.5DHero/2.5DHero/DataModel/Json/GameMode Data/Badges.vb b/2.5DHero/2.5DHero/DataModel/Json/GameMode Data/Badges.vb
new file mode 100644
index 000000000..0c9dcfed9
--- /dev/null
+++ b/2.5DHero/2.5DHero/DataModel/Json/GameMode Data/Badges.vb
@@ -0,0 +1,31 @@
+Imports System.Runtime.Serialization
+
+Namespace DataModel.Json.GameModeData
+
+ '''
+ ''' The data model for a badge.
+ '''
+
+ Public Class BadgeModel
+
+ Inherits JsonDataModel
+
+
+ Public Index As Integer
+
+
+ Public Name As String
+
+
+ Public Texture As TextureSourceModel
+
+
+ Public Region As String
+
+ 'TODO: Add enum
+
+ Public HM As String
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/2.5DHero/2.5DHero/DataModel/Json/GameMode Data/Contacts.vb b/2.5DHero/2.5DHero/DataModel/Json/GameMode Data/Contacts.vb
new file mode 100644
index 000000000..76924ddf9
--- /dev/null
+++ b/2.5DHero/2.5DHero/DataModel/Json/GameMode Data/Contacts.vb
@@ -0,0 +1,27 @@
+Imports System.Runtime.Serialization
+
+Namespace DataModel.Json.GameModeData
+
+
+ Public Class ContactModel
+
+ Inherits JsonDataModel
+
+
+ Public Id As Integer
+
+
+ Public Name As String
+
+
+ Public Skin As String
+
+
+ Public Location As String
+
+
+ Public Removable As Boolean
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/2.5DHero/2.5DHero/DataModel/Json/GameMode Data/GameMode.vb b/2.5DHero/2.5DHero/DataModel/Json/GameMode Data/GameMode.vb
new file mode 100644
index 000000000..165a683bb
--- /dev/null
+++ b/2.5DHero/2.5DHero/DataModel/Json/GameMode Data/GameMode.vb
@@ -0,0 +1,74 @@
+Imports System.Runtime.Serialization
+
+Namespace DataModel.Json.GameModeData
+
+ '''
+ ''' The data model of a GameMode config file.
+ '''
+
+ Public Class GameModeModel
+
+ Inherits JsonDataModel
+
+
+ Public Name As String
+
+
+ Public Description As String
+
+
+ Public Version As String
+
+
+ Public Author As String
+
+#Region "Paths"
+
+
+ Public MapPath As String
+
+
+ Public ScriptPath As String
+
+
+ Public PokeFilePath As String
+
+
+ Public ContentPath As String
+
+
+ Public DataPath As String
+
+#End Region
+
+
+ Public StartConfiguration As GameModeStartConfigurationModel
+
+
+ Public Gamerules As List(Of GameRuleModel)
+
+
+ Public Class GameRuleModel
+
+
+ Public Name As String
+
+
+ Public Value As String
+
+ End Class
+
+
+ Public Class GameModeStartConfigurationModel
+
+
+ Public Map As String
+
+
+ Public Script As String
+
+ End Class
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/2.5DHero/2.5DHero/DataModel/Json/GameMode Data/Interactions.vb b/2.5DHero/2.5DHero/DataModel/Json/GameMode Data/Interactions.vb
new file mode 100644
index 000000000..7bef4b6af
--- /dev/null
+++ b/2.5DHero/2.5DHero/DataModel/Json/GameMode Data/Interactions.vb
@@ -0,0 +1,78 @@
+Imports System.Runtime.Serialization
+
+Namespace DataModel.Json.GameModeData
+
+ '''
+ ''' The data model for a Pokémon interaction.
+ '''
+
+ Public Class InteractionModel
+
+ Inherits JsonDataModel
+
+
+ Public MapFiles As String()
+
+
+ Public PokemonIDs As Integer()
+
+
+ Private DaytimesStr As String()
+
+ Public Property Daytimes() As World.DayTime()
+ Get
+ Return ConvertStringArrayToEnumArray(Of World.DayTime)(DaytimesStr)
+ End Get
+ Set(value As World.DayTime())
+ DaytimesStr = ConvertEnumArrayToStringArray(value)
+ End Set
+ End Property
+
+
+ Private WeathersStr As String()
+
+ Public Property Weathers() As World.Weathers()
+ Get
+ Return ConvertStringArrayToEnumArray(Of World.Weathers)(WeathersStr)
+ End Get
+ Set(value As World.Weathers())
+ WeathersStr = ConvertEnumArrayToStringArray(value)
+ End Set
+ End Property
+
+
+ Private SeasonsStr As String()
+
+ Public Property Seasons() As World.Seasons()
+ Get
+ Return ConvertStringArrayToEnumArray(Of World.Seasons)(SeasonsStr)
+ End Get
+ Set(value As World.Seasons())
+ SeasonsStr = ConvertEnumArrayToStringArray(value)
+ End Set
+ End Property
+
+
+ Private TypesStr As String()
+
+ Public Property Types() As Element.Types()
+ Get
+ Return ConvertStringArrayToEnumArray(Of Element.Types)(TypesStr)
+ End Get
+ Set(value As Element.Types())
+ TypesStr = ConvertEnumArrayToStringArray(value)
+ End Set
+ End Property
+
+
+ Public Probability As Integer
+
+
+ Public Emoji As String
+
+
+ Public Message As String
+
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/2.5DHero/2.5DHero/DataModel/Json/GameMode Data/Pokedex.vb b/2.5DHero/2.5DHero/DataModel/Json/GameMode Data/Pokedex.vb
new file mode 100644
index 000000000..a37e28008
--- /dev/null
+++ b/2.5DHero/2.5DHero/DataModel/Json/GameMode Data/Pokedex.vb
@@ -0,0 +1,24 @@
+Imports System.Runtime.Serialization
+
+Namespace DataModel.Json.GameModeData
+
+