<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- This file should be copied as "services.xml" and configured according 
	to your needs. Since "services.xml" has been added to ".gitignore", this 
	means that your password won't be sent to the repository when you make a 
	commit. -->
<!-- IMPORTANT NOTE: Do not forget to edit "distribution/services.xml" with 
	new services definitions. Only that file is included in the server's binary 
	distributions -->
<services xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<!-- DAO Module configuration -->
	<dao module="com.l2jserver.service.database.JDBCDAOModule" />

	<!-- ###################################################################### -->
	<!-- ########################### CORE SERVICES ############################ -->
	<!-- ###################################################################### -->
	<!-- Those services provide basic core features and are required for server 
		startup process -->
	<service interface="com.l2jserver.service.database.DatabaseService"
		implementation="com.l2jserver.service.database.GameServerJDBCDatabaseService">
		<!-- Whether the database schema should be updated at startup -->
		<!-- Slows down a bit at start time, but guarantees consistency -->
		<!-- Enabled for development servers -->
		<schema automaticUpdate="true" />
		<!-- Defines the JDBC connection URL -->
		<connection url="jdbc:mysql://localhost/l2jserver2">
			<!-- The database authentication (username and password) -->
			<authentication username="l2jserver2" password="changeme" />
			<!-- Specifies the database engine to use - will load JDBC driver and 
				SQL templates -->
			<engine class="com.l2jserver.service.database.sql.MySQLDatabaseEngine" />
			<!-- Defines the database connection pool limits -->
			<pool max-active="20" max-idle="20" min-idle="5" />
		</connection>
	</service>
	<service interface="com.l2jserver.service.core.vfs.VFSService"
		implementation="com.l2jserver.service.core.vfs.TrueZipVFSService">
		<!-- Configures the root of the server data. Where all the files are placed. -->
		<fileSystem root="./">
			<!-- The "data file system" location. There, templates, static data and 
				several other important files are located. This can be a zip or a directory. -->
			<!-- The "data file system" is relative to the file system root. -->
			<data root="data/" />
		</fileSystem>
	</service>
	<service interface="com.l2jserver.service.core.threading.ThreadService"
		implementation="com.l2jserver.service.core.threading.ThreadServiceImpl" />
	<service interface="com.l2jserver.service.configuration.ConfigurationService"
		implementation="com.l2jserver.service.configuration.XMLConfigurationService" />
	<service interface="com.l2jserver.service.cache.CacheService"
		implementation="com.l2jserver.service.cache.SoftCacheService" />
	<service interface="com.l2jserver.service.core.logging.LoggingService"
		implementation="com.l2jserver.service.core.logging.Log4JLoggingService">
		<logger name="" level="ERROR" />
		<logger name="com.l2jserver" level="INFO" />
		<logger name="com.l2jserver.service.game.template.XMLTemplateService"
			level="INFO" />
		<logger name="com.l2jserver.service.cache" level="INFO" />
		<logger
			name="com.l2jserver.service.database.sql.AbstractSQLDatabaseService"
			level="INFO" />
		<logger name="com.l2jserver.service.game.world.CachedWorldIDService"
			level="INFO" />
		<logger name="com.l2jserver.model.id.object.allocator.BitSetIDAllocator"
			level="INFO" />
	</service>

	<!-- ###################################################################### -->
	<!-- ########################### GAME SERVICES ############################ -->
	<!-- ###################################################################### -->
	<!-- Those services provide all the in-game features and most of them are 
		required for players to be able to login in the server -->
	<service interface="com.l2jserver.service.game.world.WorldIDService"
		implementation="com.l2jserver.service.game.world.CachedWorldIDService" />
	<service interface="com.l2jserver.service.game.map.pathing.PathingService"
		implementation="com.l2jserver.service.game.map.pathing.MapperPathingService" />
	<service interface="com.l2jserver.service.game.scripting.ScriptingService"
		implementation="com.l2jserver.service.game.scripting.ScriptingServiceImpl" />
	<service interface="com.l2jserver.service.game.chat.ChatService"
		implementation="com.l2jserver.service.game.chat.SimpleChatService" />
	<service interface="com.l2jserver.service.game.chat.ChatLoggingService"
		implementation="com.l2jserver.service.game.chat.DatabaseChatLoggingService" />
	<service interface="com.l2jserver.service.game.admin.AdministratorService"
		implementation="com.l2jserver.service.game.admin.AdministratorServiceImpl" />
	<service interface="com.l2jserver.service.game.spawn.SpawnService"
		implementation="com.l2jserver.service.game.spawn.SpawnServiceImpl" />
	<service interface="com.l2jserver.service.game.character.CharacterService"
		implementation="com.l2jserver.service.game.character.CharacterServiceImpl">
		<!-- Defines the restrictions for character creation -->
		<creation allow="true" allowed-races="HUMAN|ELF|DARK_ELF|ORC|DWARF|KAMAEL"
			allowed-genders="MALE|FEMALE">
			<!-- The maximum amount of characters per account -->
			<limits max-per-account="8" />
		</creation>
	</service>
	<service interface="com.l2jserver.service.game.character.ShortcutService"
		implementation="com.l2jserver.service.game.character.ShortcutServiceImpl" />
	<service interface="com.l2jserver.service.game.AttackService"
		implementation="com.l2jserver.service.game.AttackServiceImpl" />
	<service interface="com.l2jserver.service.game.npc.NPCService"
		implementation="com.l2jserver.service.game.npc.NPCServiceImpl" />
	<service interface="com.l2jserver.service.game.item.ItemService"
		implementation="com.l2jserver.service.game.item.ItemServiceImpl">
		<!-- Whether drops are persisted in the database. Valid modes are: -->
		<!-- ALL - All types of drops are stored into the database -->
		<!-- CHARACTER_ONLY - Only items dropped by characters are stored in the 
			database -->
		<!-- NONE - None of the dropped items are saved into the database -->
		<drop persistent="ALL" />
	</service>
	<service interface="com.l2jserver.service.game.world.WorldService"
		implementation="com.l2jserver.service.game.world.WorldServiceImpl" />
	<service
		interface="com.l2jserver.service.game.world.event.WorldEventDispatcherService"
		implementation="com.l2jserver.service.game.world.event.WorldEventDispatcherServiceImpl">
		<!-- The amount of dispatching threads to use. You should not set it to 
			a value higher than the number of processor cores on your system. Doing so, 
			might result in performance loss instead of increase. -->
		<!-- If you wish the system to automatically determine the number of cores 
			in the system and configure the system accordingly, set it to 0 -->
		<threading count="0" />
	</service>
	<service interface="com.l2jserver.service.game.template.TemplateService"
		implementation="com.l2jserver.service.game.template.XMLTemplateService">
		<!-- The root where template data is located. Relative to the "data file 
			system" -->
		<templates root="template/" />

		<!-- Whether the templates XML schemas should be validated before loading. 
			This should be on, unless you know what you are doing! -->
		<schema validation="true" />
	</service>

	<!-- ####################################################################### -->
	<!-- ########################## NETWORK SERVICES ########################### -->
	<!-- ####################################################################### -->
	<!-- Those services all network related services that will communicate the 
		server software to the player computer running the game client. Although 
		not required, without them, becomes impossible to connect to the server in 
		order to play the game. -->
	<service interface="com.l2jserver.service.network.NetworkService"
		implementation="com.l2jserver.service.network.NettyNetworkService">
		<!-- The port in which the server should listen for incoming connections -->
		<!-- NOTE: this port must be open manually on any firewall or router that 
			is between you and other players. If you wish to play on the same machine 
			you normally don't need to change anything here nor in the firewall. -->
		<server listen="0.0.0.0:7777" />
	</service>
	<service interface="com.l2jserver.service.network.keygen.BlowfishKeygenService"
		implementation="com.l2jserver.service.network.keygen.SecureBlowfishKeygenService" />
	<service interface="com.l2jserver.service.network.gameguard.GameGuardService"
		implementation="com.l2jserver.service.network.gameguard.GameGuardServiceImpl" />
	<service interface="com.l2jserver.service.network.broadcast.BroadcastService"
		implementation="com.l2jserver.service.network.broadcast.BroadcastServiceImpl" />
</services>