<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.play.eco/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JohnK</id>
	<title>Eco - English Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.play.eco/en/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JohnK"/>
	<link rel="alternate" type="text/html" href="https://wiki.play.eco/en/Special:Contributions/JohnK"/>
	<updated>2026-06-04T03:42:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.play.eco/en/index.php?title=Registered_Mods&amp;diff=12821</id>
		<title>Registered Mods</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/en/index.php?title=Registered_Mods&amp;diff=12821"/>
		<updated>2024-09-05T16:20:55Z</updated>

		<summary type="html">&lt;p&gt;JohnK: /* 1. Register the mod in code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Registered Mods now will automatically earn Eco Credits whenever a world using them spends Eco Credits.&lt;br /&gt;
&lt;br /&gt;
==== 1. Register the mod in code ====&lt;br /&gt;
To enable this, you&#039;ll need to define any class in your mod files that implements IModInit and has a static Register function that returns a ModRegistration.&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot;&amp;gt;&lt;br /&gt;
    using Eco.Core.Plugins.Interfaces&lt;br /&gt;
    &lt;br /&gt;
    public class MyMod : IModInit&lt;br /&gt;
    {&lt;br /&gt;
        public static ModRegistration Register() =&amp;gt; new() &lt;br /&gt;
        { &lt;br /&gt;
            ModName = &amp;quot;MyMod&amp;quot;,&lt;br /&gt;
            ModDescription = &amp;quot;Mod description&amp;quot;,&lt;br /&gt;
            ModDisplayName = &amp;quot;My Mod&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;The Eco server will call this at runtime to register your mod.&lt;br /&gt;
&lt;br /&gt;
===== 2. Register the mod with Strange Loop =====&lt;br /&gt;
Email support@strangeloopgames.com, or get in touch on [https://Discord.gg/eco Discord.gg/eco] with @D3nnis3N and request mod registration along with your Eco User ID. Your mod will be reviewed, and a percentage share assigned to it.&lt;br /&gt;
&lt;br /&gt;
====  How shares work: ====&lt;br /&gt;
[[File:363784076-8bc1f3da-6348-4d35-8acd-b365b0cd2666.png|thumb|816x816px|none]]This diagram shows the shares given to each value provider when Eco Credits are spent.  Every time a player spends Eco Credits in a server, a cut will go to other parties in that world.  Any mods that are registered will split up to X% of that (currently 25% but may change).  &lt;br /&gt;
&lt;br /&gt;
You can see what mods are recognized by mousing over the &#039;Mods In World&#039; section:&lt;br /&gt;
[[File:Imagexxxxx.png|none|thumb|470x470px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The split works as follow:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Each registered mod has a percent assigned to it, which they will be given if the total of all mods is under the percent cap (25%). If it exceeds the caps, they will be all reduced to fit within the 25% cap, according to their defined percentages.&lt;br /&gt;
&lt;br /&gt;
Funds collected in this way can be used like any normal funds: to buy skins, Eco invites, and hosting time.  We will also add a way for creators who generate a lot of revenue from their mods to extract money, coming soon. &lt;br /&gt;
&lt;br /&gt;
Happy modding!&lt;br /&gt;
Happy modding!&lt;/div&gt;</summary>
		<author><name>JohnK</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/en/index.php?title=Registered_Mods&amp;diff=12820</id>
		<title>Registered Mods</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/en/index.php?title=Registered_Mods&amp;diff=12820"/>
		<updated>2024-09-05T16:16:18Z</updated>

		<summary type="html">&lt;p&gt;JohnK: /* How shares work: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Registered Mods now will automatically earn Eco Credits whenever a world using them spends Eco Credits.&lt;br /&gt;
&lt;br /&gt;
==== 1. Register the mod in code ====&lt;br /&gt;
To enable this, you&#039;ll need to define any class in your mod files that implements IModInit and has a static Register function that returns a ModRegistration.&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot;&amp;gt;&lt;br /&gt;
    public class MyMod : IModInit&lt;br /&gt;
    {&lt;br /&gt;
        public static ModRegistration Register() =&amp;gt; new() &lt;br /&gt;
        { &lt;br /&gt;
            ModName = &amp;quot;MyMod&amp;quot;,&lt;br /&gt;
            ModDescription = &amp;quot;Mod description&amp;quot;,&lt;br /&gt;
            ModDisplayName = &amp;quot;My Mod&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;The Eco server will call this at runtime to register your mod.&lt;br /&gt;
&lt;br /&gt;
===== 2. Register the mod with Strange Loop =====&lt;br /&gt;
Email support@strangeloopgames.com, or get in touch on [https://Discord.gg/eco Discord.gg/eco] with @D3nnis3N and request mod registration along with your Eco User ID. Your mod will be reviewed, and a percentage share assigned to it.&lt;br /&gt;
&lt;br /&gt;
====  How shares work: ====&lt;br /&gt;
[[File:363784076-8bc1f3da-6348-4d35-8acd-b365b0cd2666.png|thumb|816x816px|none]]This diagram shows the shares given to each value provider when Eco Credits are spent.  Every time a player spends Eco Credits in a server, a cut will go to other parties in that world.  Any mods that are registered will split up to X% of that (currently 25% but may change).  &lt;br /&gt;
&lt;br /&gt;
You can see what mods are recognized by mousing over the &#039;Mods In World&#039; section:&lt;br /&gt;
[[File:Imagexxxxx.png|none|thumb|470x470px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The split works as follow:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Each registered mod has a percent assigned to it, which they will be given if the total of all mods is under the percent cap (25%). If it exceeds the caps, they will be all reduced to fit within the 25% cap, according to their defined percentages.&lt;br /&gt;
&lt;br /&gt;
Funds collected in this way can be used like any normal funds: to buy skins, Eco invites, and hosting time.  We will also add a way for creators who generate a lot of revenue from their mods to extract money, coming soon. &lt;br /&gt;
&lt;br /&gt;
Happy modding!&lt;br /&gt;
Happy modding!&lt;/div&gt;</summary>
		<author><name>JohnK</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/en/index.php?title=Registered_Mods&amp;diff=12819</id>
		<title>Registered Mods</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/en/index.php?title=Registered_Mods&amp;diff=12819"/>
		<updated>2024-09-05T16:14:02Z</updated>

		<summary type="html">&lt;p&gt;JohnK: /* 1. Register the mod in code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Registered Mods now will automatically earn Eco Credits whenever a world using them spends Eco Credits.&lt;br /&gt;
&lt;br /&gt;
==== 1. Register the mod in code ====&lt;br /&gt;
To enable this, you&#039;ll need to define any class in your mod files that implements IModInit and has a static Register function that returns a ModRegistration.&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot;&amp;gt;&lt;br /&gt;
    public class MyMod : IModInit&lt;br /&gt;
    {&lt;br /&gt;
        public static ModRegistration Register() =&amp;gt; new() &lt;br /&gt;
        { &lt;br /&gt;
            ModName = &amp;quot;MyMod&amp;quot;,&lt;br /&gt;
            ModDescription = &amp;quot;Mod description&amp;quot;,&lt;br /&gt;
            ModDisplayName = &amp;quot;My Mod&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;The Eco server will call this at runtime to register your mod.&lt;br /&gt;
&lt;br /&gt;
===== 2. Register the mod with Strange Loop =====&lt;br /&gt;
Email support@strangeloopgames.com, or get in touch on [https://Discord.gg/eco Discord.gg/eco] with @D3nnis3N and request mod registration along with your Eco User ID. Your mod will be reviewed, and a percentage share assigned to it.&lt;br /&gt;
&lt;br /&gt;
====  How shares work: ====&lt;br /&gt;
[[File:363784076-8bc1f3da-6348-4d35-8acd-b365b0cd2666.png|thumb|816x816px|none]]Every time a player spends Eco Credits in a server, a cut will go to other parties in that world.  Any mods that are registered will split up to X% of that (currently 25% but may change).  The split works as follow:&lt;br /&gt;
&lt;br /&gt;
- Each registered mod has a percent assigned to it, which they will be given if the total of all mods is under the percent cap (25%). If it exceeds the caps, they will be all reduced to fit within the 25% cap, according to their defined percentages.&lt;br /&gt;
&lt;br /&gt;
Funds collected in this way can be used like any normal funds: to buy skins, Eco invites, and hosting time.  We will also add a way for creators who generate a lot of revenue from their mods to extract money, coming soon. &lt;br /&gt;
&lt;br /&gt;
Happy modding!&lt;/div&gt;</summary>
		<author><name>JohnK</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/en/index.php?title=Registered_Mods&amp;diff=12818</id>
		<title>Registered Mods</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/en/index.php?title=Registered_Mods&amp;diff=12818"/>
		<updated>2024-09-05T16:10:12Z</updated>

		<summary type="html">&lt;p&gt;JohnK: Mod edit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Registered Mods now will automatically earn Eco Credits whenever a world using them spends Eco Credits.&lt;br /&gt;
&lt;br /&gt;
==== 1. Register the mod in code ====&lt;br /&gt;
To enable this, you&#039;ll need to define any class in your mod files that implements IModInit and has a static Register function that returns a ModRegistration.&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot;&amp;gt;&lt;br /&gt;
    public class MyMod : IModInit&lt;br /&gt;
    {&lt;br /&gt;
        public static ModRegistration Register() =&amp;gt; new() &lt;br /&gt;
        { &lt;br /&gt;
            ModName = &amp;quot;MyMod&amp;quot;,&lt;br /&gt;
            ModDescription = &amp;quot;Mod description&amp;quot;,&lt;br /&gt;
            ModDisplayName = &amp;quot;My Mod&amp;quot;,&lt;br /&gt;
        };&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;The Eco server will call this at runtime to register your mod.&lt;br /&gt;
&lt;br /&gt;
===== 2. Register the mod with Strange Loop =====&lt;br /&gt;
Email support@strangeloopgames.com, or get in touch on [https://Discord.gg/eco Discord.gg/eco] with @D3nnis3N and request mod registration. Your mod will be reviewed, and a percentage share assigned to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
How shares work:&lt;br /&gt;
[[File:363784076-8bc1f3da-6348-4d35-8acd-b365b0cd2666.png|thumb|816x816px]]&lt;/div&gt;</summary>
		<author><name>JohnK</name></author>
	</entry>
	<entry>
		<id>https://wiki.play.eco/en/index.php?title=RCON&amp;diff=7189</id>
		<title>RCON</title>
		<link rel="alternate" type="text/html" href="https://wiki.play.eco/en/index.php?title=RCON&amp;diff=7189"/>
		<updated>2021-05-03T21:36:41Z</updated>

		<summary type="html">&lt;p&gt;JohnK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Eco RCON (Remote Console) Protocol ==&lt;br /&gt;
The Eco RCON Protocol is a TCP based communication protocol loosely based on the Source RCON Protocol standard. It allows admin commands to be issued to the server via a &amp;quot;remote console&amp;quot;. The most common use of RCON is to allow server owners to control their game servers without being in game for easy administration or automated processes.&lt;br /&gt;
== Server Owner/Admin Documentation ==&lt;br /&gt;
=== Using Eco RCON ===&lt;br /&gt;
By default, Eco&#039;s RCON implementation listens on TCP port 3002. This setting can be changed inside the network configuration options as well as the IP/host address the RCON server binds to. To use RCON a valid password must be set inside the Network plugin configuration. Servers without a valid password will reject all incoming authentication requests.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When executing a command through ECO RCON you do not need to supply the forward slash like you would in game. Below is an example of remote command execution to ban a using the mcrcon tool linked in the tool section below.&lt;br /&gt;
&lt;br /&gt;
[[File:2021-04-30 22-04-51.mp4|800px]]&lt;br /&gt;
&lt;br /&gt;
A complete list of commands that can be used with RCON or in game can be found [[Chat_Commands|here]].&lt;br /&gt;
===Public Tools and Libraries===&lt;br /&gt;
Most standard tools for communicating with standard RCON will work with Eco RCON. A short list of known working tools can be found below&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tools&#039;&#039;&#039;&lt;br /&gt;
*https://github.com/n0la/rcon (RCON command line tool)&lt;br /&gt;
*https://github.com/Tiiffi/mcrcon (RCON command line client)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All command requests sent through RCON are executed with server admin permissions. For best practice its advised you keep your RCON information secure and only let trusted users or trusted programs access your RCON server. &lt;br /&gt;
== Developer Documentation==&lt;br /&gt;
===Establishing a Connection===&lt;br /&gt;
To establish a TCP connection to an Eco RCON server you need to know the server&#039;s configured RCON port and the server&#039;s configured password and connect via a standard TCP client. Once connected you must authenticate your selves by sending a &#039;&#039;&#039;SERVERDATA_AUTH&#039;&#039;&#039; packet. Failure to do so will result in no response. If your authentication request was successful you should receive back a &#039;&#039;&#039;SERVERDATA_AUTH_RESPONSE&#039;&#039;&#039; packet with a matching id of the authentication request packet. Receiving an packet id of -1 means the authentication request has failed. An authentication request can fail if the password is incorrect, misconfigured, or if there is already an active RCON client connection.&lt;br /&gt;
===Packet Structure===&lt;br /&gt;
==== Basic Packet Structure====&lt;br /&gt;
All Eco RCON packets payloads follow this basic structure and are sent over a TCP socket&lt;br /&gt;
{| class=&amp;quot;wikitable standard-table&amp;quot;&lt;br /&gt;
!Field||Type|||Value&lt;br /&gt;
|-&lt;br /&gt;
|Size||32-bit [[wiki:Endianness|little-endian]] Signed [[Integer]]||Varies, see below.&lt;br /&gt;
|-&lt;br /&gt;
|ID||32-bit [[wiki:Endianness|little-endian]] Signed [[Integer]]||Varies, see below.&lt;br /&gt;
|-&lt;br /&gt;
|Type||32-bit [[wiki:Endianness|little-endian]] Signed [[Integer]]||Varies, see below.&lt;br /&gt;
|-&lt;br /&gt;
|Body||[[wiki:Null-terminated string|Null-terminated]] [[wiki:ASCII|ASCII]] [[String]]||Varies, see below.&lt;br /&gt;
|-&lt;br /&gt;
|Empty String||[[wiki:Null-terminated string|Null-terminated]] [[wiki:ASCII|ASCII]] [[String]]||0x00&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
====Packet Size====&lt;br /&gt;
The RCON packet size field is represented by a 32-bit little endian integer, It represents the total length of the request in bytes. Note that the &#039;&#039;&#039;packet size&#039;&#039;&#039; field itself is &#039;&#039;&#039;not&#039;&#039;&#039; included when determining the size of the packet, so the value of this field is always 4 less than the packet&#039;s actual length. The minimum possible value for &#039;&#039;&#039;packet size&#039;&#039;&#039; is 14.&lt;br /&gt;
{| class=&amp;quot;wikitable standard-table&amp;quot;&lt;br /&gt;
!Size||Containing&lt;br /&gt;
|-&lt;br /&gt;
|4 [[Byte|Bytes]]||ID Field&lt;br /&gt;
|-&lt;br /&gt;
|4 [[Byte|Bytes]]||Type Field&lt;br /&gt;
|-&lt;br /&gt;
|At least 1 [[Byte]]||Packet body (potentially empty)&lt;br /&gt;
|-&lt;br /&gt;
|1 [[Byte|Bytes]]||Empty string terminator&lt;br /&gt;
|}&lt;br /&gt;
====Packet ID====&lt;br /&gt;
The packet id field is a 32-bit little endian integer which is specified by the requesting client for each request. Its value can be any positive integer. When the server responds to a client request it will send back the same packet id it received for that command request allowing you match the original request to the server response. &lt;br /&gt;
====Packet Type ====&lt;br /&gt;
The packet type field is represented by a 32-bit little endian integer. It the intended purpose of the packet.&lt;br /&gt;
{| class=&amp;quot;wikitable standard-table&amp;quot;&lt;br /&gt;
!Value||String Descriptor&lt;br /&gt;
|-&lt;br /&gt;
|3||SERVERDATA_AUTH&lt;br /&gt;
|-&lt;br /&gt;
|2|| SERVERDATA_AUTH_RESPONSE&lt;br /&gt;
|-&lt;br /&gt;
|2||SERVERDATA_EXECCOMMAND&lt;br /&gt;
|-&lt;br /&gt;
|0||SERVERDATA_RESPONSE_VALUE&lt;br /&gt;
|}&lt;br /&gt;
====Packet Body ====&lt;br /&gt;
The packet body field is a null-terminated ASCII encoded string. The contents of the packet body vary by the executed request.&lt;br /&gt;
====Packet Types====&lt;br /&gt;
=====&#039;&#039;&#039;SERVERDATA_AUTH&#039;&#039;&#039;=====&lt;br /&gt;
&#039;&#039;&#039;SERVERDATA_AUTH&#039;&#039;&#039; is the first packet to be sent by a newly connected client. It is used to authenticate with the RCON server and gain access to the &#039;&#039;&#039;SERVERDATA_EXECCOMMAND&#039;&#039;&#039; request. The values of this packet type&#039;s fields are as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Contains&lt;br /&gt;
|-&lt;br /&gt;
|ID&lt;br /&gt;
|any positive integer, chosen by the client (will be mirrored back in the server&#039;s response)&lt;br /&gt;
|-&lt;br /&gt;
|Type&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|Body&lt;br /&gt;
| the RCON password of the server (If this field matches the password set in the Network configuration the auth request will succeed)&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: If the password is not properly configured on the server all &#039;&#039;&#039;SERVERDATA_AUTH&#039;&#039;&#039; requests will be refused.&lt;br /&gt;
=====&#039;&#039;&#039;SERVERDATA_AUTH_RESPONSE&#039;&#039;&#039;=====&lt;br /&gt;
&#039;&#039;&#039;SERVERDATA_AUTH_RESPONSE&#039;&#039;&#039; is the response notification packet of a client&#039;s &#039;&#039;&#039;SERVERDATA_AUTH&#039;&#039;&#039; request and contains the results of its authentication attempt. The status is represented by the id of the packet. A -1 value denotes a failed authentication request. If authentication was a success it matches the packet id provided in the original authentication request.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
! Contains&lt;br /&gt;
|-&lt;br /&gt;
|ID&lt;br /&gt;
|The ID of the original authentication request if it was successful, otherwise -1 on failure.&lt;br /&gt;
|-&lt;br /&gt;
|Type&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Body&lt;br /&gt;
| Empty string (0x00)&lt;br /&gt;
|}&lt;br /&gt;
=====&#039;&#039;&#039;SERVERDATA_EXECCOMMAND&#039;&#039;&#039;=====&lt;br /&gt;
&#039;&#039;&#039;SERVERDATA_EXECCOMMAND&#039;&#039;&#039; represents a command issued to the server by a client. This can be any valid player or admin command that does not require a physical player in the world to execute. The response will vary depending on the command issued.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Contains&lt;br /&gt;
|-&lt;br /&gt;
|ID&lt;br /&gt;
|any positive integer, chosen by the client (will be mirrored back in the server&#039;s response)&lt;br /&gt;
|-&lt;br /&gt;
|Type&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Body&lt;br /&gt;
|the command to be executed on the server&lt;br /&gt;
|}&lt;br /&gt;
=====&#039;&#039;&#039;SERVERDATA_RESPONSE_VALUE&#039;&#039;&#039;=====&lt;br /&gt;
&#039;&#039;&#039;SERVERDATA_RESPONSE_VALUE&#039;&#039;&#039; is sent when a command had finished executing from a &#039;&#039;&#039;SERVERDATA_EXECCOMMAND&#039;&#039;&#039; request and contains the chat displayed results of the requested command. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Contains&lt;br /&gt;
|-&lt;br /&gt;
|ID&lt;br /&gt;
| The ID assigned by the original request&lt;br /&gt;
|-&lt;br /&gt;
|Type&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|Body&lt;br /&gt;
|The server&#039;s response to the original command.&lt;br /&gt;
|}&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
[[Category:Server Management]]&lt;br /&gt;
[[Category:Modding]]&lt;/div&gt;</summary>
		<author><name>JohnK</name></author>
	</entry>
</feed>