<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.traincarts.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bbayu</id>
	<title>BergerHealer Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.traincarts.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bbayu"/>
	<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/p/Special:Contributions/Bbayu"/>
	<updated>2026-05-16T06:51:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.13</generator>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=MyWorlds/Configuration&amp;diff=2477</id>
		<title>MyWorlds/Configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=MyWorlds/Configuration&amp;diff=2477"/>
		<updated>2023-09-26T01:51:59Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Fix broken link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[MyWorlds|« Go back]]&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
Below the general configuration nodes found in:&lt;br /&gt;
&lt;br /&gt;
root\plugins\My Worlds\config.yml&lt;br /&gt;
&lt;br /&gt;
For world-specific settings, see [[MyWorlds/WorldConfiguration|World Configuration]]&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
Below the configuration nodes with matching descriptions are given:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! Default !! Description !! Value type&lt;br /&gt;
|-&lt;br /&gt;
| usePermissions || false || Sets if the Permission 3.* plugin is used || Boolean&lt;br /&gt;
|-&lt;br /&gt;
| useWaterTeleport || true || Sets if water Portals are used || Boolean&lt;br /&gt;
|-&lt;br /&gt;
| allowPortalNameOverride || false || Sets if portals can be replaced || Boolean&lt;br /&gt;
|-&lt;br /&gt;
| teleportInterval || 2000 || The minimum delay between portal teleportations in miliseconds || Number&lt;br /&gt;
|-&lt;br /&gt;
| timeLockInterval || 20 || Sets the interval, in ticks, to re-set the time when locked || Number&lt;br /&gt;
|-&lt;br /&gt;
| useWorldOperators || false  || Sets if the world-specific OP&amp;amp;nbsp;lists are used || Boolean&lt;br /&gt;
|-&lt;br /&gt;
| locale || default || Sets the localization file to use|| Text&lt;br /&gt;
|-&lt;br /&gt;
| useWorldEnterPermissions || false || Sets if world enter permission nodes are used || Boolean&lt;br /&gt;
|-&lt;br /&gt;
| usePortalEnterPermissions || false || Sets if portal enter permission nodes are used || Boolean&lt;br /&gt;
|-&lt;br /&gt;
| useWorldTeleportPermissions || false || Sets if world teleport permission nodes are used || Boolean&lt;br /&gt;
|-&lt;br /&gt;
| usePortalTeleportPermissions|| false || Sets if portal teleport permission nodes are used || Boolean&lt;br /&gt;
|-&lt;br /&gt;
| useWorldBuildPermissions || false || Sets if world build permission nodes are used || Boolean&lt;br /&gt;
|-&lt;br /&gt;
| useWorldUsePermissions || false || Sets if world use permission nodes are use || Boolean&lt;br /&gt;
|-&lt;br /&gt;
| useWorldChatPermissions || false || Sets if world chat permission nodes are used || Boolean&lt;br /&gt;
|-&lt;br /&gt;
| useWorldInventories || true || Sets if world inventories are separated using the settings || Boolean&lt;br /&gt;
|-&lt;br /&gt;
| onlyObsidianPortals || false || Sets if portals have to be surrounded by obsidian blocks to function || Boolean&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=MyWorlds/Commands&amp;diff=2476</id>
		<title>MyWorlds/Commands</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=MyWorlds/Commands&amp;diff=2476"/>
		<updated>2023-09-26T01:51:28Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Update links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Preface==&lt;br /&gt;
&lt;br /&gt;
Almost all commands operate on the world the player executing the command is currently on. To operate on another world, stick the world name to change at the very end of the command.&lt;br /&gt;
&lt;br /&gt;
If an argument, such as a world name, has spaces in it, surround the argument with quotations. For example:&lt;br /&gt;
/world load &amp;quot;my big world with spaces&amp;quot;&lt;br /&gt;
All commands below that use /world have aliases /myworlds and /mw, in case another plugin is conflicting, use those.&lt;br /&gt;
&lt;br /&gt;
Many commands are a simple yes/no. Other words such as &#039;enabled/disabled&#039; and &#039;true/false&#039; work as well.&lt;br /&gt;
&lt;br /&gt;
An overview of all permissions can be found in plugins/My_Worlds/PermissionDefaults.yml&lt;br /&gt;
&lt;br /&gt;
==World Creation==&lt;br /&gt;
&amp;lt;code&amp;gt;/world create [worldname]:[generator]:[arguments] [seed]&lt;br /&gt;
&lt;br /&gt;
/world create [worldname] [seed]&lt;br /&gt;
&lt;br /&gt;
/world create [worldname]/[environment] [seed]&lt;br /&gt;
&lt;br /&gt;
/world create world1:BananaSpace:12,grass,wood,dirt -1856378464&lt;br /&gt;
&lt;br /&gt;
/world create world2 -527332672&lt;br /&gt;
&lt;br /&gt;
/world create world2_nether&lt;br /&gt;
&lt;br /&gt;
/world create mynether/nether&lt;br /&gt;
&lt;br /&gt;
/world create itssobig/largebiomes&lt;br /&gt;
&lt;br /&gt;
/world create world3_skylands&lt;br /&gt;
&lt;br /&gt;
/world create skylandsworld&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Creating new worlds can be done simply by specifying the world name, followed by the environment of the world if relevant. The postfix of the world changes what environment is created.&lt;br /&gt;
&lt;br /&gt;
===Postfix===&lt;br /&gt;
worldname: Normal overworld&amp;lt;br&amp;gt;&lt;br /&gt;
worldname_nether: Nether world&amp;lt;br&amp;gt;&lt;br /&gt;
worldname_the_end: End world&amp;lt;br&amp;gt;&lt;br /&gt;
worldname_flat: Flat world. Change layer settings in server.properties (generator-settings)&amp;lt;br&amp;gt;&lt;br /&gt;
worldname_largebiomes: Large biomes world.&lt;br /&gt;
&lt;br /&gt;
===Postfix without the name===&lt;br /&gt;
worldname/nether: Nether world, but named &#039;worldname&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
worldname/largebiomes: Large biomes environment&lt;br /&gt;
&lt;br /&gt;
===Portals===&lt;br /&gt;
A nether link is automatically created between worldname and worldname_nether, where worldname can be any world name.&lt;br /&gt;
An end-portal gateway link is automatically created between worldname and worldname_the_end.&lt;br /&gt;
&lt;br /&gt;
===Generator Plugins===&lt;br /&gt;
It is also possible to specify a plugin name that provides the chunk generator to use for the world, followed by the configuration for this chunk generator plugin to use. In the example below, BananaSpace is used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/world create world1:BananaSpace:12,grass,wood,dirt -1856378464&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.spigotmc.org/search/1/?q=World+Generator&amp;amp;t=resource_update&amp;amp;o=relevance Search for custom world generator plugins here on Spigot]&lt;br /&gt;
&lt;br /&gt;
Use the following command to list plugins on the server that offer a world generator:&lt;br /&gt;
&amp;lt;code&amp;gt;/world listgenerators&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Flat World Options===&lt;br /&gt;
In Vanilla Minecraft, the layers of flat worlds can be configured through the options String. This can also be specified, by using the following syntax:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/world create the_world_name/flat::[options]&lt;br /&gt;
&lt;br /&gt;
/world create the_world_name/flat::3;1*minecraft:bedrock,7*minecraft:dirt,1*minecraft:stone,1*minecraft:sandstone;2;village&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.minecraft101.net/superflat/ Here is a helpful website] for generating this options String (not sponsored, there&#039;s others out there)&lt;br /&gt;
&lt;br /&gt;
My Worlds adds an extra option: &#039;&#039;&#039;nostructures&#039;&#039;&#039; and &#039;&#039;&#039;structures&#039;&#039;&#039;, to override whether to generate structures such as villages, mineshafts, etc. If omitted it defaults to what is set in the &#039;&#039;server.properties&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Void Worlds===&lt;br /&gt;
1.13+:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;/world create my_void_world/flat::minecraft:air;minecraft:the_void;nostructures&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.12.2 and before:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;/world create my_void_world/flat::3;minecraft:air;127;nostructures;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Permissions===&lt;br /&gt;
myworlds.world.create&amp;lt;br&amp;gt;&lt;br /&gt;
myworlds.world.listgenerators&lt;br /&gt;
&lt;br /&gt;
==World listing==&lt;br /&gt;
/world list&lt;br /&gt;
Show what worlds are loaded on the server, and which worlds sit in the server directory that can be loaded. When importing a world from elsewhere, you can use /world list to check it is there, then proceed with loading the world.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.list&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==World loading and unloading==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/world load [worldname]&lt;br /&gt;
/world unload [worldname]&lt;br /&gt;
/world load [worldname]:[generator]:[arguments]&amp;lt;/pre&amp;gt;&lt;br /&gt;
Load or unload a world. After loading a world, this same world will be loaded when the server (re)starts the next time. When unloading a world, the same world will no longer load on startup.&lt;br /&gt;
&lt;br /&gt;
To load in a world that uses a specific chunk generator, use the third command example above, specifying the plugin name and argument similar to the create command.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permissions:&#039;&#039;&#039;&lt;br /&gt;
* myworlds.world.unload&lt;br /&gt;
* myworlds.world.load&lt;br /&gt;
* myworlds.world.loadspecial (for specifying custom generator)&lt;br /&gt;
&lt;br /&gt;
==World copying, repair and deletion==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/world copy [worldname] [newworldname]&lt;br /&gt;
&lt;br /&gt;
/world repair [worldname] [seed]&lt;br /&gt;
&lt;br /&gt;
/world delete [worldname]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Permanently delete an unloaded world or copy an existing world to a new name. With repair, the level.dat of a world can be regenerated to make the world loadable again, and corrupted chunks are cleaned up. Note that these commands are not allowed in-game by default (not even ops), you have to give players the permission node for that to be possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permissions:&#039;&#039;&#039;&lt;br /&gt;
* myworlds.world.copy&lt;br /&gt;
* myworlds.world.delete&lt;br /&gt;
* myworlds.world.repair&lt;br /&gt;
&lt;br /&gt;
==World information==&lt;br /&gt;
/world info [worldname]&lt;br /&gt;
/world info&lt;br /&gt;
/world info world1&lt;br /&gt;
Shows information of a world, such as the seed, time, weather and other set properties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.info&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==World autosave and saving==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/world autosave [enabled/disabled]&lt;br /&gt;
&lt;br /&gt;
/world save&amp;lt;/code&amp;gt;&lt;br /&gt;
Turn automatic world saving on or off for a world, or save a world to disk manually. Worlds with autosave disabled do not unload the chunks, which may hurt performance. This makes this only suitable for small worlds with a well-defined border.&lt;br /&gt;
&lt;br /&gt;
To save all worlds on the server, use /world save *.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permissions:&#039;&#039;&#039;&lt;br /&gt;
myworlds.world.setsaving (autosave)&lt;br /&gt;
myworlds.world.save&lt;br /&gt;
&lt;br /&gt;
==Keep world spawn area loaded==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/world keepspawnloaded [yes/no]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Toggles whether the area around the world spawn is kept loaded. Keeping it loaded may help with server lag as new players join. However, it causes extra memory usage / cpu usage because of mobs that spawn here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.togglespawnloaded&lt;br /&gt;
&lt;br /&gt;
==Set spawn point==&lt;br /&gt;
&amp;lt;code&amp;gt;/world setspawn [worldname]&lt;br /&gt;
&lt;br /&gt;
/world setspawn&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the spawn point of a world to your position. It is possible to set the (re)spawn point of one world to another world. The player rotation is used as well, so it is possible to make players spawn facing into a certain direction.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.setspawn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Portal listing==&lt;br /&gt;
&amp;lt;code&amp;gt;/world portals [worldname]&lt;br /&gt;
&lt;br /&gt;
/world portals&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lists all portals (of a world), and formats them in a colour-rich message to the sender. You can see the distance of the portal in the coloured output.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.portals&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Set default nether portal or end portal behavior==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/world endportal [property] [value]&lt;br /&gt;
&lt;br /&gt;
/world netherportal [property] [value]&lt;br /&gt;
&lt;br /&gt;
/world netherportal destination [world name/portal name]&lt;br /&gt;
&lt;br /&gt;
/world netherportal autodetect&lt;br /&gt;
&lt;br /&gt;
/world netherportal info&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configures the behavior of (player-created) nether portals and naturally spawned end gateways. With autodetect, vanilla behavior can be detected for a world. This way the nether teleports to the overworld and back. With the info command, the currently set properties can be listed.&lt;br /&gt;
&lt;br /&gt;
All possible combinations of properties are possible. You can create a nether portal in the end, upon entering an end gateway, for example.&lt;br /&gt;
&lt;br /&gt;
==== Properties ====&lt;br /&gt;
* destination: World name or portal name players are teleported to upon entering the portal&lt;br /&gt;
* mode: Portal behavior mode for world destinations. This can be one of the following values:&lt;br /&gt;
** default: Players are teleported to the world spawn, or the exact portal coordinates&lt;br /&gt;
** respawn: Players respawn at their bed / world anchor, or world spawn&lt;br /&gt;
** rejoin: Players are teleported to the last position they had on another world&lt;br /&gt;
** nether_link: Players are teleported to the same coordinates (x8 nether) on the other world, where a portal frame is created&lt;br /&gt;
** end_platform: Players are teleported to the end platform coordinates (100/50/0), where an obsidian platform is created for them&lt;br /&gt;
* showcredits: Whether to show the game end credits upon entering the portal. This is what you see in the end, but you can turn that off there, or have it show these credits on other worlds.&lt;br /&gt;
* displayname: Sets the text displayed when players are teleported through the portal&lt;br /&gt;
* playeronly: Set whether only players (and not mobs/items) can teleport through the portal&lt;br /&gt;
* lastposition: Configures the portal to teleport the player to the last known position of the player on the destination world&lt;br /&gt;
* nonplayerscreateportals: Whether non-player entities can create portals upon going through nether portals (nether_link mode). Can be turned off if players are causing lag, or if obsidian farming is unwanted.&lt;br /&gt;
&lt;br /&gt;
==== Permissions ====&lt;br /&gt;
&#039;&#039;&#039;Permission to use command:&#039;&#039;&#039; myworlds.world.setportal&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission for creating portals on other worlds:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
When players enter a (self-lit) portal on a world with default portal mode nether_link or end_platform, and a portal does not exist on the other end yet, one is created. Players need the following permission to do this, or they see an &#039;and you cannot create it&#039; message. By default everyone has this permission.&lt;br /&gt;
&amp;lt;code&amp;gt;myworlds.world.linknether&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bed Respawn &amp;amp; Nether Anchor==&lt;br /&gt;
&amp;lt;code&amp;gt;/world bedrespawn [enabled/disabled]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enables or disables bed and world anchor respawn functionality for a world. When disabled, players will not respawn at their bed when they die, instead respawning at the world respawn point.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.changebedrespawn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Give a portal item==&lt;br /&gt;
&amp;lt;code&amp;gt;/world giveportal [end/nether]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gives the player a special MyWorlds item which can be used to create nether portals or end gateway portals in the real world. The placed blocks do not cause physics, which allows any shape to be built.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.giveportal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting world operators==&lt;br /&gt;
&amp;lt;code&amp;gt;/world op [playername] [worldname]&lt;br /&gt;
&lt;br /&gt;
/world deop [playername] [worldname]&lt;br /&gt;
&lt;br /&gt;
/world op [playername]&lt;br /&gt;
&lt;br /&gt;
/world deop [playername]&lt;br /&gt;
&lt;br /&gt;
/world op * World1&lt;br /&gt;
&lt;br /&gt;
/world op player1 *&lt;br /&gt;
&lt;br /&gt;
/world deop * *&lt;br /&gt;
&lt;br /&gt;
/world op&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets world [https://minecraft.wiki/w/Server#Managing_and_maintaining_a_server Operators] for a world. Players listed for the world will receive OP permissions, those that don&#039;t lose them when entering the world. Using the &#039;*&#039;-keyword you can target all players or all worlds. Players only receive or lose OP permissions if this feature is enabled in the [[MyWorlds/Configuration|Configuration]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.opping&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Player Limit==&lt;br /&gt;
&amp;lt;code&amp;gt;/world playerlimit 12&lt;br /&gt;
&lt;br /&gt;
/world playerlimit unlimited&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the maximum number of players allowed on a world. No more players can teleport to this world once full, and players that rejoin on the world are sent back to the main world (lobby) if full.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.playerlimit&lt;br /&gt;
&lt;br /&gt;
===Bypass===&lt;br /&gt;
Players that have the &amp;lt;code&amp;gt;myworlds.world.bypassplayerlimit&amp;lt;/code&amp;gt; permission can join the world regardless of player limits.&lt;br /&gt;
&lt;br /&gt;
===Evacuation===&lt;br /&gt;
If lowering the limit causes more players to be on the world than the limit, you can use the evacuate command to clear out all players earlier. No players can join while overfull.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Evacuate==&lt;br /&gt;
&amp;lt;code&amp;gt;/world evacuate [worldname] [message...]&lt;br /&gt;
&lt;br /&gt;
/world evacuate [worldname]&lt;br /&gt;
&lt;br /&gt;
/world evacuate World1 Your world has been closed!&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Evacuates a world from it&#039;s players. If you want to unload a world, but it is full of players, you can use this to get rid of the players. Portals on the evacuated world are used to teleport players away. If players have world teleport and enter permissions, they are teleported to a random world. If all fails, the player is kicked with the reason message specified. Those that did not get kicked, also get to see the message.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.evacuate&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Allow and deny mobs from spawning==&lt;br /&gt;
&amp;lt;code&amp;gt;/world allowspawn [mobname] [worldname]&lt;br /&gt;
&lt;br /&gt;
/world allowspawn [mobname]&lt;br /&gt;
&lt;br /&gt;
/world denyspawn [mobname] [worldname]&lt;br /&gt;
&lt;br /&gt;
/world denyspawn [mobname]&lt;br /&gt;
&lt;br /&gt;
/world denyspawn creeper&lt;br /&gt;
&lt;br /&gt;
/world denyspawn animal world1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allows and denies certain mobs from spawning on a world. Custom-spawned mobs (such as those spawned through commands) are ignored. You can use all mob types as mobname, but also ‘animal’, ‘monster’, ‘all‘ or ‘mob’ to collectively allow or deny mobs from spawning.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.spawning&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time==&lt;br /&gt;
&amp;lt;code&amp;gt;/world time [time] [worldname]&lt;br /&gt;
&lt;br /&gt;
/world time [time]&lt;br /&gt;
&lt;br /&gt;
/world time always 12:00&lt;br /&gt;
&lt;br /&gt;
/world time day&lt;br /&gt;
&lt;br /&gt;
/world time night world1&lt;br /&gt;
&lt;br /&gt;
/world time 24:00 locked&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the time of a world. You can use keywords like ‘lock’, ‘always’ and ‘forever’ to indicate if the time should be locked. You can use keywords like ‘day’, ‘night’, ‘dawn’, ‘morning’ to indicate a certain time. You can also use the hours:minutes to set the time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Weather==&lt;br /&gt;
&amp;lt;code&amp;gt;/world weather [weather] [worldname]&lt;br /&gt;
&lt;br /&gt;
/world weather [weather]&lt;br /&gt;
&lt;br /&gt;
/world weather always rain&lt;br /&gt;
&lt;br /&gt;
/world weather rainy&lt;br /&gt;
&lt;br /&gt;
/world weather endless storm&lt;br /&gt;
&lt;br /&gt;
/world weather always sunny World1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the weather state of a world. You can use keywords like ‘lock’, ‘always’, ‘endless’ and ‘forever’ to indicate if the weather state should be locked. You can use ‘sun’ to clear the weather, ‘rain’ for rain and ‘storm’ for rain with lightning.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.weather&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Game mode==&lt;br /&gt;
&amp;lt;code&amp;gt;/world gamemode [mode] [worldname]&lt;br /&gt;
&lt;br /&gt;
/world gamemode [mode]&lt;br /&gt;
&lt;br /&gt;
/world gamemode survival&lt;br /&gt;
&lt;br /&gt;
/world gamemode creative world1&lt;br /&gt;
&lt;br /&gt;
/world gamemode none&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the game mode for a specific world. All players in this world will automatically get this game mode when (re)joining the world. Valid game modes are &#039;survival&#039; and &#039;creative&#039;. If another name is used, it is cleared, and players remain the game mode they had previously.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permissions:&#039;&#039;&#039;&lt;br /&gt;
myworlds.world.gamemode&lt;br /&gt;
myworlds.world.ignoregamemode (players with this permission as unaffected by world game modes)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Difficulty==&lt;br /&gt;
&amp;lt;code&amp;gt;/world difficulty [difficulty] [worldname]&lt;br /&gt;
&lt;br /&gt;
/world difficulty [difficulty]&lt;br /&gt;
&lt;br /&gt;
/world difficulty peaceful&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets the difficulty of a world. The difficulty influences the damage done to players and if mobs spawn. Valid difficulties are &#039;easy&#039;, &#039;normal&#039;, &#039;hard&#039; and &#039;peaceful&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.difficulty&lt;br /&gt;
&lt;br /&gt;
==Alias==&lt;br /&gt;
&amp;lt;code&amp;gt;/world alias &amp;quot;The Nether&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets a world name alias to use with [[MyWorlds/PAPI|PlaceholderAPI]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.alias&lt;br /&gt;
&lt;br /&gt;
==Advancements==&lt;br /&gt;
&amp;lt;code&amp;gt;/world advancements [enabled/disabled/silent]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sets whether players can gain advancements on the world. By disabling advancements on creative worlds, you can prevent players from cheating while playing on survival worlds on the same server. When set to silent, no chat messages are sent when players unlock advancements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.advancements&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Player versus Player==&lt;br /&gt;
&amp;lt;code&amp;gt;/world pvp [enable/disabled]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Toggles PVP on or off for a world.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.togglepvp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teleport to world spawn==&lt;br /&gt;
&amp;lt;code&amp;gt;/world spawn [worldname]&lt;br /&gt;
&lt;br /&gt;
/world spawn&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teleports you to the spawn point of a world. Other than permissions for this command, you can set world-specific teleport permissions too. World enter permissions are also active.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.spawn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teleport to the last position on a group of worlds==&lt;br /&gt;
&amp;lt;code&amp;gt;/world rejoin [worldname]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Checks world [[MyWorlds/Commands#Last_Position|last-position]] sharing rules for any worlds the player was last on, and teleports the player to that world at the last coordinates. If the player never played on any of these worlds before, the player is teleported to the world spawn of worldname.&lt;br /&gt;
&lt;br /&gt;
See also: [[MyWorlds/Portals#Rejoin_Portals|rejoin portals]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permissions:&#039;&#039;&#039;&lt;br /&gt;
myworlds.world.rejoin.* - Allows rejoining any world&lt;br /&gt;
myworlds.world.rejoin.[worldname] - Allows rejoining a world by this name&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Last Position==&lt;br /&gt;
&amp;lt;code&amp;gt;/world lastposition list&lt;br /&gt;
&lt;br /&gt;
/world lastposition tp &amp;lt;worldname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/world lastposition merge &amp;lt;world1&amp;gt; &amp;lt;world2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/world lastposition split &amp;lt;worldname&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
List shows the last positions of the player running the command, or of a player specified as argument. For every world this information is known of, the coordinates are displayed. Clicking on the items teleports the player to it.&lt;br /&gt;
&lt;br /&gt;
===Merging===&lt;br /&gt;
The merge and split commands are used to merge worlds that share a &#039;&#039;&#039;rejoin operation&#039;&#039;&#039;. If merged, rejoining one of the merged worlds means the player is teleported to the last position on any of the worlds the player was last on.&lt;br /&gt;
&lt;br /&gt;
===Permissions===&lt;br /&gt;
* myworlds.world.lastposition&lt;br /&gt;
&lt;br /&gt;
==Load or save world configuration==&lt;br /&gt;
&amp;lt;code&amp;gt;/world config load&lt;br /&gt;
&lt;br /&gt;
/world config save&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Loads or saves world configuration, from/to the worlds.yml file.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Permission:&#039;&#039;&#039; myworlds.world.config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teleport to portal or world spawn==&lt;br /&gt;
&amp;lt;code&amp;gt;/tpp [worldname]&lt;br /&gt;
&lt;br /&gt;
/tpp [portalname]&lt;br /&gt;
&lt;br /&gt;
/tpp bergerkiller max mogers World2&lt;br /&gt;
&lt;br /&gt;
/tpp alfa beta Home&lt;br /&gt;
&lt;br /&gt;
/tpp [player1] [player2] [player3] [world/portalname]&lt;br /&gt;
&lt;br /&gt;
/world teleport [worldname]&lt;br /&gt;
&lt;br /&gt;
/world tp [worldname]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teleports you, or the players specified, to the portal or spawn point of a world. Other than permissions for this command, you can set world-specific and portal-specific teleport permissions too. World and portal enter permissions are also active. The portals are listed, like the world portals command, when the portal is not found.&lt;br /&gt;
&lt;br /&gt;
===Permissions===&lt;br /&gt;
 myworlds.tpp - Allows the player to teleport himself, or other players, to any world or portal&lt;br /&gt;
 myworlds.portal.teleport.[portalname] - Allows a player to use /tpp to teleport to portal [name]. Can not teleport other players.&lt;br /&gt;
 myworlds.world.teleport.[worldname] - Allows a player to use /tpp to teleport to world [name]. Can not teleport other players.&lt;br /&gt;
 myworlds.world.enter.[worldname] - Allows a player to enter world [name]. Is important for this command, and for entering portals in the world. By default OP-only.&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=TC-Coasters&amp;diff=2475</id>
		<title>TC-Coasters</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=TC-Coasters&amp;diff=2475"/>
		<updated>2023-09-26T01:45:40Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Manual update of moved page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WIP|Bergerkiller}}&lt;br /&gt;
&lt;br /&gt;
[[Main Page|« Go back]]&lt;br /&gt;
&lt;br /&gt;
{{Plugin|TC-Coasters|Rollercoaster track for TrainCarts|https://www.spigotmc.org/resources/tc-coasters.59583/|https://github.com/bergerhealer/TC-Coasters/|Tcc-logo.png|250px}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TC-Coasters&#039;&#039;&#039; is an add-on for [[TrainCarts]] which adds smooth rollercoaster track. These track can be placed anywhere and are not bound to discrete block positions. An interactive ingame editor allows players to modify the track in realtime, with track rendered as levers and leashes. The created track supports junctions, track animations and placing objects on the track (for supporting custom models).&lt;br /&gt;
&lt;br /&gt;
== Nodes ==&lt;br /&gt;
[[File:TCC_Tracks.png|thumb|Train drives on a loop of connected &#039;&#039;&#039;TC-Coasters&#039;&#039;&#039; track nodes]]&lt;br /&gt;
The plugin works with &#039;&#039;&#039;Nodes&#039;&#039;&#039; and &#039;&#039;&#039;Connections&#039;&#039;&#039;. Nodes are represented as &#039;&#039;levers&#039;&#039;, and are points in the 3D world that act as anchors for the track. Nodes can be connected together, represented as &#039;&#039;leashes&#039;&#039;. Trains drive over connections, passing from node to node.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
To get started, players first need to give themselves the in-game editor [[Map Display]] using the following command:&lt;br /&gt;
{{Command|tcc give|Give the player a TC-Coasters editor item|train.coasters.use}}&lt;br /&gt;
&lt;br /&gt;
Generally players will want to put the map item in their off-hand so that they can move around and see the world properly. With the map item in their off-hand they can left-click and right-click in the world with an empty hand to interact with TC-Coasters.&lt;br /&gt;
&lt;br /&gt;
=== Menu ===&lt;br /&gt;
While holding the map item, players can switch between different menus using [[Map_Display#Controls|steering controls]] to begin making changes. The following menu&#039;s are available:&lt;br /&gt;
* &#039;&#039;&#039;Disabled (Hidden)&#039;&#039;&#039;: Hides the track, editor is inactive&lt;br /&gt;
* &#039;&#039;&#039;Create Track&#039;&#039;&#039;: Players can right-click to create new track nodes or connect nodes together&lt;br /&gt;
* &#039;&#039;&#039;Change Position&#039;&#039;&#039;: Players can right-click and drag to move nodes around&lt;br /&gt;
* &#039;&#039;&#039;Change Orientation&#039;&#039;&#039;: Players can right-click and drag on the node&#039;s rendered levers to change the orientation of carts on it&lt;br /&gt;
* &#039;&#039;&#039;Change Rail Block&#039;&#039;&#039;: Players can change where the rail block is located, which is important when using [[TrainCarts/Signs|TrainCarts signs]].&lt;br /&gt;
* &#039;&#039;&#039;Manage Animations&#039;&#039;&#039;: Players can create named animation states, which can be animated using the [[TC-Coasters/Animations#Sign|TC-Coasters Animate Sign]]&lt;br /&gt;
* &#039;&#039;&#039;Track Objects&#039;&#039;&#039;: Players can place down static objects (items, blocks, etc.) which are positioned on the track&lt;br /&gt;
* &#039;&#039;&#039;Delete Track&#039;&#039;&#039;: Players can right-click to delete nodes or disconnect two selected nodes&lt;br /&gt;
&lt;br /&gt;
=== Selecting Nodes ===&lt;br /&gt;
[[File:TCC_Selecting_demo.gif|thumb|All different ways of selecting nodes]]&lt;br /&gt;
The following interactive selecting mechanics are available:&lt;br /&gt;
* The previous selection is cleared and a new node is selected by looking at it and left-clicking&lt;br /&gt;
* The previous selection is cleared by not looking at a node/the sky and left-clicking&lt;br /&gt;
* Multiple nodes can be selected by holding the sneak button and left-clicking each node&lt;br /&gt;
* All nodes that are connected together can be selected by double-left-clicking&lt;br /&gt;
* A range of connected nodes can be selected by selecting one, then sneak-double-left-clicking another node&lt;br /&gt;
&lt;br /&gt;
=== Creating Nodes ===&lt;br /&gt;
[[File:TCC_Creating_Nodes.gif|thumb|Three different ways of creating new nodes]]&lt;br /&gt;
There are several ways to create new nodes:&lt;br /&gt;
&lt;br /&gt;
==== Right-Clicking in the world ====&lt;br /&gt;
Players can switch to the &#039;&#039;&#039;Create Track&#039;&#039;&#039; menu, put the map item in their off-hand, and then right-click on top or against blocks to place nodes there. When clicking in the air, nodes are placed in front of the player, where the player is looking. The newly placed node is automatically selected. If a previous node was already selected, a connection is created from the previous node to the newly placed node. This way players can click against the blocks multiple times in a row to create a long chain of nodes.&lt;br /&gt;
&lt;br /&gt;
==== Dragging a node and left-clicking ====&lt;br /&gt;
Players can switch to the &#039;&#039;&#039;Change Position&#039;&#039;&#039; menu, put the map item in their off-hand, select a node, and then drag that node along with them. By left-clicking once while dragging this node, the node is duplicated in place, with the newly duplicated node now being dragged. When wanting to complete a loop, the dragged node can be dragged on top of another node to merge with it.&lt;br /&gt;
&lt;br /&gt;
==== Create command ====&lt;br /&gt;
The following command can be used to emulate the right-click create behavior without having to be in the menu:&lt;br /&gt;
{{Command|tcc create|Creates new nodes or makes connections|train.coasters.use}}&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
=== Moving Nodes ===&lt;br /&gt;
To move nodes around, switch to the &#039;&#039;&#039;Change Position&#039;&#039;&#039; menu, [[TC-Coasters#Selecting Nodes|select]] the node(s) to move, then press and hold the right-click mouse button to move them around with you. Nodes can be moved to connect with Vanilla Minecart rails, with purple dust particles displayed when connected successfully.&lt;br /&gt;
&lt;br /&gt;
=== Deleting Nodes ===&lt;br /&gt;
Players can select the node to delete, switch to the &#039;&#039;&#039;Delete Track&#039;&#039;&#039; menu, and right-click once to delete it. They can also use the following command:&lt;br /&gt;
{{Command|tcc delete|Disconnects two selected nodes or deletes the selected nodes|train.coasters.use}}&lt;br /&gt;
&lt;br /&gt;
=== Connecting Nodes ===&lt;br /&gt;
There are several ways to connect two nodes together:&lt;br /&gt;
&lt;br /&gt;
==== Drag one node on top of another ====&lt;br /&gt;
While inside the &#039;&#039;&#039;Change Position&#039;&#039;&#039; menu, selected nodes can be dragged around by holding right-click. By dragging one node near to another, the nodes merge together as one, effectively connecting what was connected to the dragged node.&lt;br /&gt;
&lt;br /&gt;
==== Select two nodes and Create ====&lt;br /&gt;
After selecting the two nodes that need to be connected, players can right-click while inside the &#039;&#039;&#039;Create Track&#039;&#039;&#039; menu or use the &#039;&#039;/tcc create&#039;&#039; command to connect two nodes together.&lt;br /&gt;
&lt;br /&gt;
=== Disconnecting Nodes ===&lt;br /&gt;
To disconnect nodes, players can select the two nodes to disconnect and right-click while inside the &#039;&#039;&#039;Delete Track&#039;&#039;&#039; menu. Alternatively, they can use the &#039;&#039;/tcc delete&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
== Junctions ==&lt;br /&gt;
[[File:TCC_Junctions.png|thumb|&#039;&#039;&#039;TC-Coasters&#039;&#039;&#039; junction with 3 directions]]&lt;br /&gt;
Junctions are created when three or more other nodes are connected to a single node. When created, colored hovering block items show up, with a hovering number for each direction. The items can be left-clicked by players to switch the junction. The switched direction is marked using a &#039;&#039;#&#039;&#039; prefix. Trains coming from a direction not marked take the most-straight path to one of the switched directions.&lt;br /&gt;
&lt;br /&gt;
[[TrainCarts/Signs/Switcher|Switcher signs]] can be used to switch the rails automatically. Prefix each statement with the number of the junction to switch, for example:&lt;br /&gt;
{{Sign|[+train]|switcher|1-3:empty|2-3:default}}&lt;br /&gt;
Which will switch 1-3 for empty trains, and 2-3 otherwise.&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
Track can move from one position to the next, with trains moving along with it, using track animations. Animations can be triggered through commands, or by using a TrainCarts sign.&lt;br /&gt;
&lt;br /&gt;
[[TC-Coasters/Animations|» Animations]]&lt;br /&gt;
&lt;br /&gt;
== Track Objects ==&lt;br /&gt;
Floating blocks or items can be placed on top of the track. Objects can be manipulated in a very similar way as the track nodes, with additional mechanics for duplicating and dragging around.&lt;br /&gt;
&lt;br /&gt;
[[TC-Coasters/Track-Objects|» Track Objects]]&lt;br /&gt;
&lt;br /&gt;
== Signs ==&lt;br /&gt;
[[TrainCarts/Signs|Traincarts signs]] can be placed at nodes in two ways: physical signs at the rail block position, or assigned to the node.&lt;br /&gt;
&lt;br /&gt;
[[TC-Coasters/Signs|» Signs]]&lt;br /&gt;
&lt;br /&gt;
== Commands and Permissions ==&lt;br /&gt;
There are a lot of extra commands for advanced uses, such as undo, redo, copy, paste, import and export.&lt;br /&gt;
&lt;br /&gt;
[[TC-Coasters/Commands and Permissions|» Commands and Permissions]]&lt;br /&gt;
&lt;br /&gt;
== No Limits 2 Import/Export ==&lt;br /&gt;
You can export tracks from No Limits 2 to TC-Coasters. You can also export tracks from TC-Coasters to No Limits 2!&lt;br /&gt;
&lt;br /&gt;
[[TC-Coasters/NoLimits|» NL2 Export/Import]]&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=TC-Coasters/Commands_and_Permissions&amp;diff=2474</id>
		<title>TC-Coasters/Commands and Permissions</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=TC-Coasters/Commands_and_Permissions&amp;diff=2474"/>
		<updated>2023-09-26T01:44:13Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Bbayu moved page TC-Coasters/CommandsandPermissions to TC-Coasters/Commands and Permissions without leaving a redirect: Fix hard to read page name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:MyLanguage/TC-Coasters|« Go back]]&lt;br /&gt;
&lt;br /&gt;
TC-Coasters has a few commands and permissions, here&#039;s a list of all of them.&lt;br /&gt;
&lt;br /&gt;
==Permissions==&lt;br /&gt;
• [ train.coasters.use ] Grants players the ability to use TC-Coasters anywhere. Main permission.&lt;br /&gt;
&lt;br /&gt;
• [ train.coasters.plotsquared.use ] PlotSquared integration: players with this permission can make changes to coasters inside plots they are member of (requires plotSquaredEnabled set to true in the TCCoasters config.yml)&lt;br /&gt;
&lt;br /&gt;
• [ train.coasters.lock ] Players can lock/unlock coasters, preventing or allowing players to make changes to them&lt;br /&gt;
&lt;br /&gt;
• [ train.coasters.build.animator ] Players can build the tcc-animate sign&lt;br /&gt;
&lt;br /&gt;
• [ train.coasters.import ] Players can import (download) coaster CSV contents from Hastebin servers&lt;br /&gt;
&lt;br /&gt;
• [ train.coasters.export ] Players can export (upload) coaster CSV contents to Hastebin servers (default: https://paste.traincarts.net)&lt;br /&gt;
&lt;br /&gt;
== Normal Commands==&lt;br /&gt;
• /tcc give - Gives an interactive Map editor for creating, adjusting and removing coaster tracks&lt;br /&gt;
&lt;br /&gt;
• /tcc undo/redo - Undo or redo last changes you made&lt;br /&gt;
&lt;br /&gt;
• /tcc deselect - Deselect all previously selected nodes&lt;br /&gt;
&lt;br /&gt;
• /tcc reload - Reload all coasters from disk&lt;br /&gt;
&lt;br /&gt;
• /tcc save - Forces a save to write all pending contents to disk&lt;br /&gt;
&lt;br /&gt;
• /tcc copy - Copies the selected nodes to the player&#039;s clipboard&lt;br /&gt;
&lt;br /&gt;
• /tcc paste - Pastes the contents of the clipboard at the player&#039;s position, aligned by block, rotated based on how the player looks&lt;br /&gt;
&lt;br /&gt;
• /tcc cut - Copies and deletes the selected nodes&lt;br /&gt;
&lt;br /&gt;
• /tcc delete - Deletes all selected nodes&lt;br /&gt;
&lt;br /&gt;
• /tcc lock - Locks the selected coasters so that no more changes can be made to it, unless unlocked. Requires permission.&lt;br /&gt;
&lt;br /&gt;
• /tcc unlock - Unlocks the selected coasters so that they can be modified again by players. Requires permission.&lt;br /&gt;
&lt;br /&gt;
• /tcc export - Exports all selected nodes as a coaster CSV file, and uploads it to a Hastebin server ( https://paste.traincarts.net by default)&lt;br /&gt;
&lt;br /&gt;
• /tcc export nl2 - Exports in NoLimits2 CSV format instead&lt;br /&gt;
&lt;br /&gt;
• /tcc import - Imports the coaster by downloading from a Hastebin server. Supports TCC CSV format and NoLimits2 CSV format)&lt;br /&gt;
&lt;br /&gt;
• /tcc export (nl2) [filename] - Exports the coaster to file, saved to the plugins/TCCoasters/export directory.&lt;br /&gt;
&lt;br /&gt;
• /tcc import [filename] - Imports the coaster from file. Place the .csv file to import in the plugins/TCCoasters/import directory. It is possible to import from the export directory as well.&lt;br /&gt;
&lt;br /&gt;
==Advanced Commands==&lt;br /&gt;
• /tcc posx [value] - Sets the x-coordinate of all selected nodes&lt;br /&gt;
&lt;br /&gt;
• /tcc posy [value] - Sets the y-coordinate of all selected nodes&lt;br /&gt;
&lt;br /&gt;
• /tcc posz [value] - Sets the z-coordinate of all selected nodes&lt;br /&gt;
&lt;br /&gt;
• /tcc posx add [value] - Adds a value to the x-coordinate of all selected nodes (moves it). Works for posy/posz too.&lt;br /&gt;
&lt;br /&gt;
• /tcc posx align [value] - Sets the x-coordinate of all selected nodes relative to the current position block&lt;br /&gt;
&lt;br /&gt;
• /tcc posx average - Sets the x-coordinate of all selected nodes to the average value of all selected nodes. Works for posy/posz too.&lt;br /&gt;
&lt;br /&gt;
• /tcc orientation [x] [y] [z] - Sets the orientation (up-direction) of all selected nodes&lt;br /&gt;
&lt;br /&gt;
• /tcc orientation (up/down/north/etc.) - Sets the orientation (up-direction) of all selected nodes to a given face&lt;br /&gt;
&lt;br /&gt;
• /tcc rail [x] [y] [z] - Sets the rail block of all selected nodes to the coordinates specified&lt;br /&gt;
&lt;br /&gt;
• /tcc rail (up/down/north/etc.) - Moves the rail block by one block&lt;br /&gt;
&lt;br /&gt;
• /tcc railx (add/average) ([value]) - Similar to posx/y/z, but for the rail block position of all selected nodes&lt;br /&gt;
&lt;br /&gt;
• /tcc rail reset - Resets the rail block to the default position (where the node is located)&lt;br /&gt;
&lt;br /&gt;
• /tcc animation select [name] - Selects an animation, so that all future changes to nodes that have this animation will be saved under this name&lt;br /&gt;
&lt;br /&gt;
• /tcc animation play [name] [time] - Plays an animation by name for all selected nodes, with a time duration in seconds&lt;br /&gt;
&lt;br /&gt;
• /tcc animation add [name] - Creates a new animation with the given name for all selected nodes, overwriting previous ones&lt;br /&gt;
&lt;br /&gt;
• /tcc animation remove [name] - Removes an animation from all selected nodes&lt;br /&gt;
&lt;br /&gt;
• /tcc animation clear - Removes all animations in all selected nodes&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=TrainCarts/ActionBlocks&amp;diff=2473</id>
		<title>TrainCarts/ActionBlocks</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=TrainCarts/ActionBlocks&amp;diff=2473"/>
		<updated>2023-09-26T01:40:49Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Update Minecraft Wiki links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[TrainCarts|« Go back]]&lt;br /&gt;
&lt;br /&gt;
==Depreciated==&lt;br /&gt;
&amp;lt;big&amp;gt;The ActionBlocks addon is depreciated and no-longer supported. It is not compatible with the latest versions of Traincarts.&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction ==&lt;br /&gt;
&lt;br /&gt;
In an attempt to fully support Minecart Mania&#039;s features, action blocks are introduced. Action blocks is an add-on for TrainCarts, which is included in the download. It is not a requirement to run TrainCarts, but the add-on does require TrainCarts.&lt;br /&gt;
&lt;br /&gt;
Action blocks are dumbed-down versions of the Sign systems in the official TrainCarts. Instead of using [https://minecraft.wiki/w/Sign signs], it is a certain block that behaves in certain ways. What [https://minecraft.wiki/w/Block block] material performs what can be configured in the configuration of TrainCartsBlocks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;plugins/TrainCarts/blocks.yml&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The blocks ==&lt;br /&gt;
&lt;br /&gt;
It currently supports several [https://minecraft.wiki/w/Block blocks], all working in both directions and all working with on/off [https://minecraft.wiki/w/Redstone_mechanics redstone physics]. You can configure some action blocks to invert redstone power, just in case you want something to work without having to power the block. Permissions from the main TrainCarts are used as well, so you can deny players from building stations. This permission is active once the player tries to place a [https://minecraft.wiki/w/Minecart minecart] track on top of an action block.&lt;br /&gt;
&lt;br /&gt;
=== Station block ===&lt;br /&gt;
&lt;br /&gt;
By default [https://minecraft.wiki/w/Obsidian obsidian], it can stop trains when left unpowered. When powered again, it will launch trains into the previous direction, acting like the &#039;continue&#039; of the sign version. If a train enters a powered station block, it will receive a boost.&lt;br /&gt;
&lt;br /&gt;
=== Ejector block ===&lt;br /&gt;
&lt;br /&gt;
By default [https://minecraft.wiki/w/Block_of_Iron iron], it can eject [https://minecraft.wiki/w/Minecart minecarts] when powered. If unpowered, nothing happens.&lt;br /&gt;
&lt;br /&gt;
=== Elevator ===&lt;br /&gt;
&lt;br /&gt;
By default [https://minecraft.wiki/w/Block_of_Gold gold], it can teleport trains up and down to another elevator block. It favors teleporting upwards above downwards. When powered, it will teleport the train, if not, nothing happens.&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=TrainCarts/Attachments&amp;diff=2472</id>
		<title>TrainCarts/Attachments</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=TrainCarts/Attachments&amp;diff=2472"/>
		<updated>2023-09-26T01:29:58Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Change external links to Wikipedia into interwiki links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[TrainCarts|« Go back]]&lt;br /&gt;
[[File:Attachment_editor_wooden_car.png|thumb|A customized minecart is being edited using the attachment editor]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Attachment Editor&#039;&#039;&#039; is an in-game interactive [[Map Display]] with which individual carts of a train can be customized.&lt;br /&gt;
This menu is used to configure the appearance and behavior of carts, with a [[wikipedia:Tree structure|tree layout]]&lt;br /&gt;
showing the different attachments. Each attachment represents a part of the train, such as a moving entity or a seat designation.&lt;br /&gt;
Attachments added as a child to other attachments are positioned relative to the parent. This allows many attachments to be moved&lt;br /&gt;
and animated together as one larger attachment.&lt;br /&gt;
&lt;br /&gt;
==Basic usage==&lt;br /&gt;
===Command===&lt;br /&gt;
To start using the attachment editor, players need to give themselves the map item:&lt;br /&gt;
{{Command|train attachments|Give the player the attachment editor map item|train.command.editor}}&lt;br /&gt;
&lt;br /&gt;
===Editing===&lt;br /&gt;
To edit a single cart of a train, and make it visible in the editor, you need to select the cart first.&lt;br /&gt;
&lt;br /&gt;
[[TrainCarts/Editing|» Editing]]&lt;br /&gt;
&lt;br /&gt;
===Navigation===&lt;br /&gt;
Each attachment is displayed on a different row, with an indent to the right every time it is added to a new parent. To navigate between attachments, use the Up/Down (W/S) steering controls. For each attachment selected, different menus can be accessed by pressing Left/Right (A/D) and Jump (spacebar) afterwards. Once inside a menu, the sneak button (shift) can be used to exit it again. This behavior is the same for all other menus. To move around while still viewing the editor, it can be placed into the off-hand (&#039;&#039;typically F&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
To add new attachments, duplicate them, change the position in the tree hierarchy, or to delete them, use the General menu denoted by three vertical lines.&lt;br /&gt;
&lt;br /&gt;
===Dropping items===&lt;br /&gt;
[[File:Attachments_Drop_Item_Small.gif|thumb|An item is dropped from the inventory, configuring the attachment|link=File:Attachments_Drop_Item.gif]]&lt;br /&gt;
Menus where an item is being configured can be set instantly by dropping an item from the player&#039;s inventory. With the menu open, simply open the inventory, pick the item to set, and click on the outside of the inventory to drop it. The drop will be cancelled and the item set in the menu.&lt;br /&gt;
&lt;br /&gt;
===Numbers===&lt;br /&gt;
Number sliders are used to configure numeric values, such position coordinates. Pressing the Left/Right buttons once will increment/decrement a very small amount. Holding the buttons for a longer time causes the number to increment/decrement faster and faster the longer it is being held down.&lt;br /&gt;
&lt;br /&gt;
===Text===&lt;br /&gt;
Text is input using an anvil menu. After typing in the desired text, click on the emerald to proceed, or the barrier item to cancel the change.&lt;br /&gt;
&lt;br /&gt;
===Setting using commands===&lt;br /&gt;
{{Command|train menu set [value]|Set a numeric or text value for the currently selected menu|train.command.editor}}&lt;br /&gt;
&lt;br /&gt;
==Attachment Menu==&lt;br /&gt;
* [[TrainCarts/Attachments/Appearance|Appearance]] - Configures the type, look and behavior&lt;br /&gt;
* [[TrainCarts/Attachments/Physical|Physical]] - Configures the physical shape and wheel positions of the cart&lt;br /&gt;
* [[TrainCarts/Attachments/Position|Position]] - Configures the exact position, orientation and movement behavior&lt;br /&gt;
&lt;br /&gt;
==Backlog==&lt;br /&gt;
===Editor===&lt;br /&gt;
* [[TrainCarts/Attachments/Saving|Saving trains (needs a cross-link about import/export and the whole savedtrain logic)]]&lt;br /&gt;
-&amp;gt; Navigating the tree menu&lt;br /&gt;
* [[TrainCarts/Attachments/ParentChildNode|The concept of parent-child node relationships (needs visuals)]]&lt;br /&gt;
* [[TrainCarts/Attachments/NewAttachments|Adding new attachments]]&lt;br /&gt;
* [[TrainCarts/Attachments/DuplicatingAttachments|Duplicating attachments]]&lt;br /&gt;
* [[TrainCarts/Attachments/DeletingAttachments|Deleting attachments]]&lt;br /&gt;
* [[TrainCarts/Attachments/ReorderingAttachments|Reordering attachments]]&lt;br /&gt;
&lt;br /&gt;
===Physical===&lt;br /&gt;
* [[TrainCarts/Attachments/CartSize|Cart size]]&lt;br /&gt;
* [[TrainCarts/Attachments/WheelDistance|Wheel distance]]&lt;br /&gt;
* [[TrainCarts/Attachments/WheelOffset|Wheel offset]]&lt;br /&gt;
&lt;br /&gt;
===Position===&lt;br /&gt;
* [[TrainCarts/Attachments/TransformType|Transform type]]&lt;br /&gt;
* [[TrainCarts/Attachments/Anchor|Anchor]]&lt;br /&gt;
&lt;br /&gt;
===Animations===&lt;br /&gt;
* [[TrainCarts/Animations/Overview|Overview]]&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=TrainCarts/TrainProperties&amp;diff=2471</id>
		<title>TrainCarts/TrainProperties</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=TrainCarts/TrainProperties&amp;diff=2471"/>
		<updated>2023-09-26T01:27:49Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Replace sign image with sign template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
[[Special:MyLanguage/TrainCarts|« Go back]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
In DefaultTrainProperties.yml and TrainProperties.yml, you can set important properties for trains or carts, like what happens when they collide. DefaultTrainProperties.yml is the config for every new train, whilst TrainProperties.yml are for trains which already exist. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
DefaultTrainProperties.yml has three types of properties: default, admin and spawner. These property lists can set in the following ways:&lt;br /&gt;
&lt;br /&gt;
By &#039;&#039;&#039;permissions&#039;&#039;&#039;:&amp;lt;br&amp;gt;&lt;br /&gt;
Give people with a permission that create the trains certain properties (train.property.**** -&amp;gt; train.property.default),&lt;br /&gt;
&lt;br /&gt;
By &#039;&#039;&#039;sign&#039;&#039;&#039;:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{sign|[+train]|property|setdefault|&amp;lt;name&amp;gt;}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By &#039;&#039;&#039;command&#039;&#039;&#039;:&amp;lt;br&amp;gt;&lt;br /&gt;
Select the train (by punching it) and typing &amp;quot;/train setdefault default|admin|spawner&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
If using the below table as a reference for values, all cart properties will be a part of the default train properties as well.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
You can also set an individual property of a train or cart using /train &amp;lt;propertyname&amp;gt; &amp;lt;value&amp;gt;. A list of these property names are described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Properties == &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Train Properties&lt;br /&gt;
!Property&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|soundEnabled&lt;br /&gt;
|boolean&lt;br /&gt;
|Sets whether ambient minecart sounds are enabled&lt;br /&gt;
|-&lt;br /&gt;
|displayName&lt;br /&gt;
|string&lt;br /&gt;
|Sets the display name of the train&lt;br /&gt;
|-&lt;br /&gt;
|allowPlayerTake&lt;br /&gt;
|boolean&lt;br /&gt;
|Sets whether the train supports players taking minecarts with them when they leave&lt;br /&gt;
|-&lt;br /&gt;
|requirePoweredMinecart&lt;br /&gt;
|boolean&lt;br /&gt;
|Sets whether the train needs a powered minecart to function&lt;br /&gt;
|-&lt;br /&gt;
|trainCollision&lt;br /&gt;
|boolean&lt;br /&gt;
|Sets whether the train can collide with other entities&lt;br /&gt;
|-&lt;br /&gt;
|collisionDamage&lt;br /&gt;
|double&lt;br /&gt;
|Sets the amount of damage the train does when colliding with entites&lt;br /&gt;
|-&lt;br /&gt;
|keepChunksLoaded&lt;br /&gt;
|boolean&lt;br /&gt;
|Sets whether this train keeps nearby chunks loaded&lt;br /&gt;
|-&lt;br /&gt;
|speedLimit&lt;br /&gt;
|double&lt;br /&gt;
|Sets the maximum speed of the train in blocks per tick&lt;br /&gt;
|-&lt;br /&gt;
|wait.distance&amp;lt;br&amp;gt;wait.delay&amp;lt;br&amp;gt;wait.acceleration&amp;lt;br&amp;gt;wait.deceleration&lt;br /&gt;
|double values&lt;br /&gt;
|Distance sets the distance the train will wait to maintain a distance between itself and a train ahead&lt;br /&gt;
Delay sets the time the train waits when stopped completely&lt;br /&gt;
Acceleration/deceleration sets the maximum change of speed at which it maintains distance (speeds up/slows down)&lt;br /&gt;
|-&lt;br /&gt;
|suffocation&lt;br /&gt;
|boolean&lt;br /&gt;
|Sets whether passengers inside this train can sustain suffocation damage&lt;br /&gt;
|-&lt;br /&gt;
|killMessage&lt;br /&gt;
|string&lt;br /&gt;
|Sets the message displayed when a player or named entity&amp;lt;ref&amp;gt;Use %0% to display the player or entity&#039;s name when entering the string. For example, &amp;quot;%0% was crushed by a rolling minecart&amp;quot;&amp;lt;/ref&amp;gt; dies to a minecart collision. &lt;br /&gt;
|-&lt;br /&gt;
|banking.strength&lt;br /&gt;
banking.smoothness&lt;br /&gt;
|double&lt;br /&gt;
|Sets how much a cart will bank sideways with strength when cornering and how long it will take to return to normal with smoothness&lt;br /&gt;
|-&lt;br /&gt;
|slowDown&lt;br /&gt;
|boolean&lt;br /&gt;
|Sets whether a minecart will experience friction and gravity&lt;br /&gt;
|-&lt;br /&gt;
|allowManualMovement&lt;br /&gt;
|boolean&lt;br /&gt;
|Sets whether minecart passengers can manually move the train they are in with W and S&lt;br /&gt;
|-&lt;br /&gt;
|tickets&lt;br /&gt;
|string[]&lt;br /&gt;
|Used internally&lt;br /&gt;
|-&lt;br /&gt;
|collision: &lt;br /&gt;
    players:&lt;br /&gt;
    passive:&lt;br /&gt;
    neutral:&lt;br /&gt;
    hostile:&lt;br /&gt;
    tameable:&lt;br /&gt;
    pet:&lt;br /&gt;
    animal:&lt;br /&gt;
    monster:&lt;br /&gt;
    jockey:&lt;br /&gt;
    killer_bunny:&lt;br /&gt;
    npc:&lt;br /&gt;
    utility:&lt;br /&gt;
    boss:&lt;br /&gt;
    train:&lt;br /&gt;
|string&lt;br /&gt;
|Sets a [[Special:MyLanguage/Custom_servers/Bukkit/TrainCarts/Physical/Collision|collision mode]] for the given collidable&lt;br /&gt;
Allowed modes are default, push, cancel, kill, killnodrops, enter, link, damage, damagenodrops, skip&lt;br /&gt;
|-&lt;br /&gt;
|allowPlayerEnter&lt;br /&gt;
|boolean&lt;br /&gt;
|Sets whether players can enter the train&lt;br /&gt;
|-&lt;br /&gt;
|allowPlayerExit&lt;br /&gt;
|boolean&lt;br /&gt;
|Sets whether players can exit the train&lt;br /&gt;
|-&lt;br /&gt;
|invincible&lt;br /&gt;
|boolean&lt;br /&gt;
|Sets whether the train is invincible&lt;br /&gt;
|-&lt;br /&gt;
|isPublic&lt;br /&gt;
|boolean&lt;br /&gt;
|Sets whether non-owners of the train can enter&lt;br /&gt;
|-&lt;br /&gt;
|pickUp&lt;br /&gt;
|boolean&lt;br /&gt;
|Sets whether storage minecarts in the train can pick up items&lt;br /&gt;
|-&lt;br /&gt;
|exitOffset &lt;br /&gt;
    ==: vector&lt;br /&gt;
    x:&lt;br /&gt;
    y:&lt;br /&gt;
    z:&lt;br /&gt;
|double&lt;br /&gt;
|Sets the offset relative to the train in which players will teleport to when they exit the train&lt;br /&gt;
|-&lt;br /&gt;
|exitYaw&lt;br /&gt;
|double&lt;br /&gt;
|Sets the yaw of the player&#039;s view when they exit the train&lt;br /&gt;
|-&lt;br /&gt;
|exitPitch&lt;br /&gt;
|double&lt;br /&gt;
|Sets the pitch of the player&#039;s view when they exit the train&lt;br /&gt;
|-&lt;br /&gt;
|destination&lt;br /&gt;
|string&lt;br /&gt;
|Sets the destination of the train&lt;br /&gt;
|-&lt;br /&gt;
|enterMessage&lt;br /&gt;
|string&lt;br /&gt;
|Sets a message to display when entering the train&lt;br /&gt;
|-&lt;br /&gt;
|spawnItemDrops&lt;br /&gt;
|boolean&lt;br /&gt;
|Sets whether broken blocks should drop items&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Cart Properties&lt;br /&gt;
!Property&lt;br /&gt;
!Type&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|owners&lt;br /&gt;
|string[]&lt;br /&gt;
|Sets a list of owners&#039; names of the &lt;br /&gt;
|-&lt;br /&gt;
|ownerPermissions&lt;br /&gt;
|string[]&lt;br /&gt;
|Used internally&lt;br /&gt;
|-&lt;br /&gt;
|tags&lt;br /&gt;
|string[]&lt;br /&gt;
|Sets a list of tags the train has&lt;br /&gt;
|-&lt;br /&gt;
|driveSound&lt;br /&gt;
|strring&lt;br /&gt;
|Sets the sound that plays when the cart rolls&lt;br /&gt;
|-&lt;br /&gt;
|blockBreakTypes&lt;br /&gt;
|string[]&lt;br /&gt;
|Sets an array of block types the cart will break which are one block directly to the left and right of the rails when it passes them&lt;br /&gt;
Example usage:&lt;br /&gt;
  - DIRT&lt;br /&gt;
  - COBBLE&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=TrainCarts/Commands/Selectors&amp;diff=2470</id>
		<title>TrainCarts/Commands/Selectors</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=TrainCarts/Commands/Selectors&amp;diff=2470"/>
		<updated>2023-09-26T01:20:20Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Update Minecraft Wiki links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
[[Special:MyLanguage/TrainCarts/Commands|« Go back]]&lt;br /&gt;
&lt;br /&gt;
== Introduction == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
Traincarts adds command selectors that can be used to target trains, or passengers of trains, similar to how vanilla minecraft&#039;s [https://minecraft.wiki/w/Target_selectors @e selector] works. Besides the usual position-based selector filters, other train properties can be used to select trains that match specific criteria. These selectors can be used with &#039;&#039;&#039;other plugins&#039;&#039;&#039;. If a selector targets more than one player/train, then the entire command is repeated for every player/train result. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Two selectors exist: &amp;lt;code&amp;gt;@train&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;@ptrain&amp;lt;/code&amp;gt;. Both accept identical selector conditions, which will be discussed on the rest of this page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
To quickly view what conditions are available in-game, use a Traincarts command like &amp;lt;code&amp;gt;/train info --train @ptrain[&amp;lt;/code&amp;gt; which will then auto-complete and show suggestions of supported conditions.&lt;br /&gt;
&lt;br /&gt;
=== Quick Command Examples === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Example&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| /say hello @ptrain[distance=..5]&lt;br /&gt;
| Message &amp;quot;hello&amp;quot; to the passengers of all trains 5 blocks away or less&lt;br /&gt;
|-&lt;br /&gt;
| /kick @ptrain[name=train23]&lt;br /&gt;
| Kicks players inside train with name &#039;train23&#039;&lt;br /&gt;
|-&lt;br /&gt;
| /train destroy --train @train[destination=InterState5]&lt;br /&gt;
| Destroy the trains heading for InterState5&lt;br /&gt;
|-&lt;br /&gt;
| /train eject --train @train[dx=-2..2,dy=-3..3,dz=-2..2]&lt;br /&gt;
| Eject the trains within a cuboid range of the sender&lt;br /&gt;
|-&lt;br /&gt;
| /train launch 0.5 --options 2 --train @train[tag=express]&lt;br /&gt;
| Launches the train with tag &#039;express&#039; to a speed of 0.5 over 2 blocks distance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conditions == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Multiple conditions can be specified, which are all AND-ed together. All number-based conditions support Minecraft range syntax: &amp;lt;code&amp;gt;a..b&amp;lt;/code&amp;gt;. For example, &amp;lt;code&amp;gt;-5..5&amp;lt;/code&amp;gt; (-5 to 5), &amp;lt;code&amp;gt;..6&amp;lt;/code&amp;gt; (6 or less) and &amp;lt;code&amp;gt;12..&amp;lt;/code&amp;gt; (12 or more). Prefixing the condition value with &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt; will make it evaluate as &#039;not&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
In all examples below &amp;lt;code&amp;gt;@train&amp;lt;/code&amp;gt; can be substituted with &amp;lt;code&amp;gt;@ptrain&amp;lt;/code&amp;gt; to instead target the player passengers of the trains.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Position Cuboid === &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;x/y/z&amp;lt;/code&amp;gt; conditions specify where on the world trains should be selected. This specifies a cuboid range. The &amp;lt;code&amp;gt;dx/dy/dz&amp;lt;/code&amp;gt; can also be specified to grow this cuboid. If only dx/dy/dz are specified, then the x/y/z of the sender is used. The &amp;lt;code&amp;gt;world&amp;lt;/code&amp;gt; condition can optionally be specified to operate on other worlds, or to run from a server terminal where no world can be inferred.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| @train[x=10..12,y=23..56,z=-100..-80]&lt;br /&gt;
| All trains in cuboid (10, 23, -100) -&amp;gt; (12, 56, 80)&lt;br /&gt;
|-&lt;br /&gt;
| @train[x=10,y=23,z=-100,dx=2,dy=33,dz=20]&lt;br /&gt;
| Same as above, but specified with dx/dy/dz to &#039;grow&#039; the cuboid&lt;br /&gt;
|-&lt;br /&gt;
| @train[x=10,y=10,z=10,dx=-2..2,dy=-10..10,dz=-2..2]&lt;br /&gt;
| Complex use: grows the cuboid from point (10, 10, 10) in both directions. This becomes cuboid (8, 0, 8) -&amp;gt; (12, 20, 12)&lt;br /&gt;
|-&lt;br /&gt;
| @train[dx=-10..10,dy=-5..5,dz=-10..10]&lt;br /&gt;
| Selects a cuboid around the sender (command block / player) of the command&lt;br /&gt;
|-&lt;br /&gt;
| @train[world=world_the_end,x=10,y=89,z=-20,dx=-10..10,dy=-10..10,dz=-10..10]&lt;br /&gt;
| The world name to target can be used to target trains on other worlds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Distance === &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;distance&amp;lt;/code&amp;gt; condition filters trains based on distance to the sender, or a cuboid specified. This is a spherical distance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| @train[distance=..10]&lt;br /&gt;
| All trains 10 blocks or less away from the sender&lt;br /&gt;
|-&lt;br /&gt;
| @train[distance=1000..]&lt;br /&gt;
| All trains 1000 blocks away or more from the sender&lt;br /&gt;
|-&lt;br /&gt;
| @train[x=100,y=50,z=-100,distance=..5]&lt;br /&gt;
| All trains 5 blocks or less away from coordinate (100, 50, -100)&lt;br /&gt;
|-&lt;br /&gt;
| @train[x=10,y=10,z=10,dx=50,dz=50,distance=..10]&lt;br /&gt;
| All trains 10 blocks or less away from cuboid (10, 10, 10) -&amp;gt; (60, 10, 60)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sort and Limit === &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;sort&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;limit&amp;lt;/code&amp;gt; conditions can be used to pick a single result from many based on distance, or to pick limited results at random. &#039;&#039;&#039;Sort&#039;&#039;&#039; supports conditions &amp;lt;code&amp;gt;nearest&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;furthest&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;random&amp;lt;/code&amp;gt;. &#039;&#039;&#039;Limit&#039;&#039;&#039; must be a natural integer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| @train[distance=..100,sort=random,limit=1]&lt;br /&gt;
| Picks a single random train 100 blocks away or less&lt;br /&gt;
|-&lt;br /&gt;
| @train[distance=..100,sort=nearest,limit=2]&lt;br /&gt;
| Picks at most 2 nearest trains, 100 blocks away or less&lt;br /&gt;
|-&lt;br /&gt;
| @train[distance=1000..,sort=furthest,limit=10]&lt;br /&gt;
| Picks at most 10 trains furthest away, 1000 blocks distance away or more&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Train Name === &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; condition can be used to select trains by name, or a name pattern. Supports the same wildcard pattern rules as the [[Special:MyLanguage/TrainCarts/Signs#Remote_Control|remote control]] syntax.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| @train[name=train12]&lt;br /&gt;
| Selects train with name &#039;train12&#039;&lt;br /&gt;
|-&lt;br /&gt;
| @train[name=Intercity*Express]&lt;br /&gt;
| Selects trains with name starting with &amp;quot;Intercity&amp;quot; and ending with &amp;quot;Express&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| @train[name=*]&lt;br /&gt;
| Selects all trains on the world&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Train Tags === &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt; condition, which can be specified multiple times, can be used to select the tags assigned to trains and filter on those. Like the &#039;&#039;name&#039;&#039; condition, this supports a wildcard pattern. This only checks that a particular tag is or isn&#039;t present, not that it is the only tag present.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| @train[tag=mytag]&lt;br /&gt;
| Selects trains that have tag &#039;mytag&#039;&lt;br /&gt;
|-&lt;br /&gt;
| @train[tag=*fast,tag=!express]&lt;br /&gt;
| Selects trains that have a tag ending with &#039;fast&#039;, but do not have tag &#039;express&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Passenger Count === &amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;passengers&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;playerpassengers&amp;lt;/code&amp;gt; conditions select the trains that meet a certain number of (player) passengers. This supports the range command to check for &#039;at least&#039; a number of passengers, such as &amp;lt;code&amp;gt;@train[passengers=5..]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Derailed === &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;derailed&amp;lt;/code&amp;gt; condition selects trains that have derailed. For example: &amp;lt;code&amp;gt;@train[derailed=1]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;@train[derailed=true]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unloaded === &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;unloaded&amp;lt;/code&amp;gt; condition selects trains that are inside unloaded chunks and are therefore no longer simulated. Example: &amp;lt;code&amp;gt;@train[unloaded=1]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;@train[unloaded=true]&amp;lt;/code&amp;gt;.&lt;br /&gt;
Trains that keep chunks loaded do not unload.&lt;br /&gt;
&lt;br /&gt;
=== Speed === &amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;speed&amp;lt;/code&amp;gt; condition (alias: &amp;lt;code&amp;gt;velocity&amp;lt;/code&amp;gt;) selects trains that move at a certain speed. This is the actual movement speed, which is at most the speed limit set for the train. Example: &amp;lt;code&amp;gt;@train[speed=0]&amp;lt;/code&amp;gt; for trains that are not moving.&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous Properties === &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
More might be added in the future, but the additional properties can be used to filter the selection&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| destination&lt;br /&gt;
| [[Special:MyLanguage/TrainCarts/PathFinding|Destination]] set for the train&lt;br /&gt;
|-&lt;br /&gt;
| friction&lt;br /&gt;
| Friction modifier of the train (default: 1)&lt;br /&gt;
|-&lt;br /&gt;
| gravity&lt;br /&gt;
| Gravity modifier of the train (default: 1)&lt;br /&gt;
|-&lt;br /&gt;
| keepchunksloaded&lt;br /&gt;
| Whether the train keeps nearby chunks loaded&lt;br /&gt;
|-&lt;br /&gt;
| speedlimit&lt;br /&gt;
| Speed limit set for the train&lt;br /&gt;
|-&lt;br /&gt;
| ticket&lt;br /&gt;
| Same checks as for tags, but for [[Special:MyLanguage/TrainCarts/Tickets|ticket names]] instead&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=TrainCarts/Signs/Spawner&amp;diff=2469</id>
		<title>TrainCarts/Signs/Spawner</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=TrainCarts/Signs/Spawner&amp;diff=2469"/>
		<updated>2023-09-26T01:18:20Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Update Minecraft Wiki links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
[[Special:MyLanguage/TrainCarts/Signs|« Go back]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
[[File:TrainCarts-Spawner.gif|frame|right]]&lt;br /&gt;
The train spawner sign allows you to spawn complete trains. Trains are spawned to the text-side of the sign on the rails above. When it receives power while it was unpowered before, it will trace down the tracks and spawn a train on it if there are no other trains occupying the rails.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Syntax == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{sign|[train]|spawn 2|psmmmmmsp}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== First line === &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&#039;&#039;[train]&#039;&#039;, a spawn direction can be set by specifying trigger directions. For example: &#039;&#039;[train:left]&#039;&#039; or &#039;&#039;[train:right]&#039;&#039;. If none is set, the train is spawned based on what side is powered by redstone. For automatic spawners, &#039;&#039;[+train]&#039;&#039; (always powered) is recommended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Second line === &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&#039;&#039;spawn&#039;&#039;, optionally followed up by the forward force to spawn the train at.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Third and fourth lines === &amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
The minecart types to spawn, using characters shown below. The resulting train will be spawned with the same types in the same order as set on the sign. To spawn many carts at once, this way spawning more than 30 Minecarts, define the number of times to spawn in front of the character. For example, &#039;&#039;30s60m&#039;&#039; spawns a train with 30 storage minecarts and 60 regular minecarts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Text&lt;br /&gt;
! Minecart type&lt;br /&gt;
|-&lt;br /&gt;
| m&lt;br /&gt;
| [https://minecraft.wiki/w/Minecart Regular Minecart]&lt;br /&gt;
|-&lt;br /&gt;
| p&lt;br /&gt;
| [https://minecraft.wiki/w/Minecart_with_Furnace Powered Minecart]&lt;br /&gt;
|-&lt;br /&gt;
| s&lt;br /&gt;
| [https://minecraft.wiki/w/Minecart_with_Chest Storage Minecart]&lt;br /&gt;
|-&lt;br /&gt;
| t&lt;br /&gt;
| [https://minecraft.wiki/w/Minecart_with_TNT TNT Minecart]&lt;br /&gt;
|-&lt;br /&gt;
| h&lt;br /&gt;
| [https://minecraft.wiki/w/Minecart_with_Hopper Hopper minecart]&lt;br /&gt;
|-&lt;br /&gt;
| e&lt;br /&gt;
| [https://minecraft.wiki/w/Minecart_with_Monster_Spawner Minecart with Spawner]&lt;br /&gt;
|}&lt;br /&gt;
It is also possible to spawn trains you made and saved before. Just put the name of the train on the 3rd line instead of the minecart types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{sign|[train]|spawn|&amp;lt;train name&amp;gt;}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automated spawning == &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
As of v1.69 it is possible to spawn trains at a set interval:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{sign|[+train]|spawn 1:20 0.5|mmm}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Will spawn 3 minecarts every 1 minute and 20 seconds at a velocity of 0.5 blocks/tick. The interval time has to be set after spawn and before the launching velocity. The automatic spawner will load a 7x7 chunk area around the sign, and spawn a minecart. Try not to set the interval too low as that may cause issues when the chunks around the signs unload a lot.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=TrainCarts/Signs/Sound&amp;diff=2468</id>
		<title>TrainCarts/Signs/Sound</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=TrainCarts/Signs/Sound&amp;diff=2468"/>
		<updated>2023-09-26T01:14:48Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Update Minecraft Wiki links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[TrainCarts/Signs|« Go back]]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
This sign can play a sound effect, specified by name, when a train enters or power is supplied.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
{{sign|[+train]/[+cart]|sound|&amp;lt;soundname&amp;gt;|&amp;lt;soundname&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{sign|[+train]|sound|block.beacon.|power_select}}&lt;br /&gt;
&lt;br /&gt;
{{sign|[+train]|sound 0.56 0.5|block.note_block.bell|}}&lt;br /&gt;
&lt;br /&gt;
=== First line ===&lt;br /&gt;
&lt;br /&gt;
When [train] is used, the sound is played in all the minecarts of the train. When [cart] is used, the sound is only played at the minecart that is currently above the sign. When no minecarts are near when the sign is powered, the sound is played above the sign. (at the rails)&lt;br /&gt;
&lt;br /&gt;
=== Second line ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;sound&#039;&#039;, followed up by an optional pitch and volume. &lt;br /&gt;
Values of 1.0 are the defaults.The range of volume is from 0.0 to 1.0. &lt;br /&gt;
The range of pitch in note_block is from 0.5 (2^(-12/12) ) to 2.0 (2^(12/12) )&lt;br /&gt;
A full list of pitch value can be found on the Minecraft Wiki: [https://minecraft.wiki/w/Note_Block Note Block]&lt;br /&gt;
Pitch can be applied to any sound effect(some effects will be accelerated）&lt;br /&gt;
Use &#039;&#039;msound&#039;&#039; to play the sound every tick while a train is moving on top of it.&lt;br /&gt;
Use &#039;&#039;sound in&#039;&#039; to play the sound only to player passengers of the train.&lt;br /&gt;
&lt;br /&gt;
=== Third and fourth lines ===&lt;br /&gt;
&lt;br /&gt;
The name of the sound to play. Both lines are concatenated together, so that longer sound names can be specified. For example, you can put &#039;block.beacon.&#039; on the third line and &#039;deactivate&#039; on the fourth line, to play the &#039;block.beacon.deactivate&#039; sound effect.&lt;br /&gt;
&lt;br /&gt;
A full list of sound names can be found on the Minecraft Wiki: [https://minecraft.wiki/w/Sounds.json/Java_Edition_values Sounds.json/Java Edition values] or https://www.digminecraft.com/lists/sound_list_pc.php&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=TrainCarts/Signs/Launcher&amp;diff=2467</id>
		<title>TrainCarts/Signs/Launcher</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=TrainCarts/Signs/Launcher&amp;diff=2467"/>
		<updated>2023-09-26T01:12:08Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Change external links to Wikipedia into interwiki links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
[[Special:MyLanguage/TrainCarts/Signs|« Go back]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
The launcher sign, similar to the [[Special:MyLanguage/TrainCarts/Signs/Station|station]] sign, can launch trains and make them reach a certain speed. The distance over which the train slows down/speeds up and the direction to launch can all be specified. Launching at a speed of 0 will slowly put the train to a complete halt, similar to how stations stop trains. Note that the speed is not locked after launching is completed: you can still push the train around or stop it entirely.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Syntax == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{sign|[train]|launch 10|0.4|continue}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== First line === &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
There is no difference between using &#039;&#039;[cart]&#039;&#039; or &#039;&#039;[train]&#039;&#039;. [[Special:MyLanguage/TrainCarts/Signs#Remote Control|Remote control]] can also be used in combination with this sign.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Second line === &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&#039;&#039;launch&#039;&#039; or &#039;&#039;launcher&#039;&#039;, followed up by the launch configuration. Launching can be done over a set distance, a set time, or at a constant acceleration. The launch function can be configured as [[wikipedia:Linear function|linear]] or [[wikipedia:Bezier curve|bezier]]. A bezier curve will accelerate slower towards the beginning and end of the launch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Syntax&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| launch&lt;br /&gt;
| Automatically computes a suitable distance to launch at, by looking for the first bend in the rails up ahead.&lt;br /&gt;
The maximum distance calculated this way is 100 blocks.&lt;br /&gt;
|-&lt;br /&gt;
| launch 20.0&lt;br /&gt;
| Launches the train to the target speed over 20 blocks (meters)&lt;br /&gt;
|-&lt;br /&gt;
| launch 20.0s&lt;br /&gt;
| Launches the train to the target speed in 20 seconds&lt;br /&gt;
|-&lt;br /&gt;
| launch 1m&lt;br /&gt;
| Launches the train to the target speed in 1 minute&lt;br /&gt;
|-&lt;br /&gt;
| launch 500ms&lt;br /&gt;
| Launches the train to the target speed in 500 milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| launch 100t&lt;br /&gt;
| Launches the train to the target speed in 100 ticks (5 seconds)&lt;br /&gt;
|-&lt;br /&gt;
| launch 2.2G&lt;br /&gt;
| Launches the train to the target speed at a constant acceleration based on a G-force of 2.2 (0.2406m/t&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
|-&lt;br /&gt;
| launch 10km/h/s&lt;br /&gt;
| Launches the train to the target speed at a constant acceleration. See the [[Special:MyLanguage/TrainCarts/Acceleration|TrainCarts/Acceleration]] page for more information.&lt;br /&gt;
Must have a slash somewhere to be considered an acceleration expression.&lt;br /&gt;
|-&lt;br /&gt;
| launch 20l&amp;lt;br&amp;gt;launch 20sl&amp;lt;br&amp;gt;launch 10km/h/sl&lt;br /&gt;
| By appending a &#039;&#039;l&#039;&#039; at the end of the expression, the launch follows a linear curve.&lt;br /&gt;
|-&lt;br /&gt;
| launch 20b&amp;lt;br&amp;gt;launch 20sb&amp;lt;br&amp;gt;launch 10km/h/sb&lt;br /&gt;
| By appending a &#039;&#039;b&#039;&#039; at the end of the expression, the launch follows a bezier curve.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Third line === &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
The speed to launch at. If left empty, it will launch at the speed specified in the configuration (&#039;&#039;launchForce&#039;&#039;). To put the train to a complete halt, use 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
Absolute speeds use a positive or zero number with no sign; to launch the train to a speed of 1.25 blocks per tick (25 blocks per second, or 90 km/h), use &amp;quot;1.25&amp;quot;. Relative speeds require a sign even when positive; to launch the train to a speed 0.5 higher than it was before, write &amp;quot;+0.5&amp;quot;; to decrease the speed by 0.5, write &amp;quot;-0.5&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
When only a value is specified, the unit is blocks/tick. For all other supported units, see [[Special:MyLanguage/TrainCarts/Velocity|TrainCarts/Velocity]]&lt;br /&gt;
&lt;br /&gt;
==== Speed limit ====&lt;br /&gt;
Normally trains will never speed up beyond what the speed limit property is set to. To overcome this, you will need to set a new speed limit, but setting the speed limit property may result in an instant speed-up. To fix this, it is possible to specify two numbers on the launcher sign to update both. It will smoothly launch to a new speed limit speed, and set the remainder as &#039;energy&#039; that will slowly go down.&lt;br /&gt;
&lt;br /&gt;
==== Speed limit syntax ====&lt;br /&gt;
Set a new speed limit of 2.0 and launch the train to this speed over a distance of 20 blocks. Once reached, give the train 10 &#039;energy&#039;.&lt;br /&gt;
{{sign|[train]|launch 20|2.0 10.0|}}&lt;br /&gt;
&lt;br /&gt;
=== Fourth line === &amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
Optionally you can specify the [[Special:MyLanguage/TrainCarts/Signs/Direction|direction]] to launch here. The default parameter, if blank, is &amp;quot;continue&amp;quot; – it will launch the train in the same direction from which it came.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=Category:Outdated_Articles&amp;diff=2466</id>
		<title>Category:Outdated Articles</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=Category:Outdated_Articles&amp;diff=2466"/>
		<updated>2023-09-26T01:06:47Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Created page with &amp;quot;This page lists all articles which are containing the Update Template.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists all articles which are containing the [[Template:Update|Update Template]].&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=Category:Work_in_Progress_Articles&amp;diff=2465</id>
		<title>Category:Work in Progress Articles</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=Category:Work_in_Progress_Articles&amp;diff=2465"/>
		<updated>2023-09-26T01:05:50Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists all articles which are containing the [[Template:WIP|Work in Progress Template]].&lt;br /&gt;
&lt;br /&gt;
Keep in mind, that as long as the template on the page mentions a user working on it, that you have to ask them first before making your own changes to the pages.&amp;lt;br&amp;gt;&lt;br /&gt;
You are also always welcome to first ask in the discussion of the corresponding page before making changes yourself.&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=TrainCarts/Signs/Flip&amp;diff=2464</id>
		<title>TrainCarts/Signs/Flip</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=TrainCarts/Signs/Flip&amp;diff=2464"/>
		<updated>2023-09-26T01:05:03Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Mark as WIP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[TrainCarts/Signs|« Go back]]&lt;br /&gt;
{{WIP}}&lt;br /&gt;
&lt;br /&gt;
{{sign|[train]|flip}}&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=TrainCarts/Signs/Items&amp;diff=2463</id>
		<title>TrainCarts/Signs/Items</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=TrainCarts/Signs/Items&amp;diff=2463"/>
		<updated>2023-09-26T01:04:08Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Update old links from when page is in Minecraft Wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
You can define items on multiple signs, including transfer, crafter, switcher and detector signs. All of them use the same syntax to &#039;&#039;parse&#039;&#039; items. Items are delimited by &#039;&#039;&#039;;&#039;&#039;&#039;-signs and can be defined using multiple syntax rules.&lt;br /&gt;
&lt;br /&gt;
The first number, if followed up by a &#039;&#039;&#039;space, x, or *&#039;&#039;&#039;, defines the amount of that item. Then the name, or type, of the item is defined. This can be done using the actual name or the item index value. Finally the sub-index is defined. You can use a characteristic word for the item type. For example, when you need a certain type of wool, you can use :red. You can also define the sub-index directly.&lt;br /&gt;
&lt;br /&gt;
== Item Shortcuts ==&lt;br /&gt;
In case you need to specify a lot of items at once (but the sign lacks space for it), you can define Item Shortcuts in the &#039;&#039;config.yml&#039;&#039;. By default, shortcuts for armor, weaponry, fuel, heatable and some others are defined there.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;width: 300px; height: 182px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Text&amp;lt;br&amp;gt; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Result&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#cccccc&amp;quot; rowspan=&amp;quot;1&amp;quot; | wood&amp;lt;br&amp;gt; &lt;br /&gt;
| bgcolor=&amp;quot;#cccccc&amp;quot; | All wood&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | slab:1 &lt;br /&gt;
| Sandstone slab&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#cccccc&amp;quot; | 5 stone&amp;lt;br&amp;gt; &lt;br /&gt;
| bgcolor=&amp;quot;#cccccc&amp;quot; rowspan=&amp;quot;4&amp;quot; | 5 stone&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#cccccc&amp;quot; | 5xstone&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#cccccc&amp;quot; | 5Xstone&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#cccccc&amp;quot; | 5*stone&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 6x5&amp;lt;br&amp;gt; &lt;br /&gt;
| 6 of type 5 (wood)&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#cccccc&amp;quot; | wool:red&amp;lt;br&amp;gt; &lt;br /&gt;
| bgcolor=&amp;quot;#cccccc&amp;quot; | All red wool&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 6xstairs:stone&amp;lt;br&amp;gt; &lt;br /&gt;
| 6 stone stairs&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#cccccc&amp;quot; | 5*35:4&amp;lt;br&amp;gt; &lt;br /&gt;
| bgcolor=&amp;quot;#cccccc&amp;quot; | 5 yellow wool&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 5 wool&amp;lt;br&amp;gt; &lt;br /&gt;
| 5 wool of any color&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#cccccc&amp;quot; | fuel&amp;lt;br&amp;gt; &lt;br /&gt;
| bgcolor=&amp;quot;#cccccc&amp;quot; | an item shortcut set in the configuration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For a list of item integers, see [https://minecraft.wiki/w/Java_Edition_data_values/Pre-flattening Data values]&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=TrainCarts/Signs/Elevator&amp;diff=2462</id>
		<title>TrainCarts/Signs/Elevator</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=TrainCarts/Signs/Elevator&amp;diff=2462"/>
		<updated>2023-09-26T01:01:01Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Update old links from when page is in Minecraft Wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[TrainCarts/Signs|« Go back]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:TCElevators.png|thumb|right|Elevator signs teleporting up and down]]&lt;br /&gt;
The elevator sign can teleport trains up and down to another elevator sign. Note that it doesn&#039;t teleport to [[TrainCarts/ActionBlocks#Elevator|Elevator Blocks]], as that is another system. You can set on the sign to what direction to teleport, as well as which number elevator to take.&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&lt;br /&gt;
{{sign|[train]|elevator|up 2}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Second line&#039;&#039;&#039;: &#039;&#039;elevator&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Third line ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;up&#039;&#039; or &#039;&#039;down&#039;&#039;, optionally followed up by the number of elevator to take. For example, &#039;&#039;up 2&#039;&#039; would take the second elevator above this one. Note that if there is no available elevator at that location, nothing happens.&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=TrainCarts/Signs/Statements&amp;diff=2461</id>
		<title>TrainCarts/Signs/Statements</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=TrainCarts/Signs/Statements&amp;diff=2461"/>
		<updated>2023-09-26T00:59:13Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Change external links to current wiki into internal wikilinks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
The [[TrainCarts/Signs/Switcher|switcher]] and [[TrainCarts/Signs/Detector|detector]] signs use statements to perform a certain task. In the case of the switcher sign, toggling the lever and tracks. The third and fourth lines are used to put these statements, which are parsed by the plugin automatically.There are multiple syntax rules, which will be expanded whenever something new needs to be evaluated.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
The third and fourth lines act as a logical &#039;&#039;or&#039;&#039; when toggling the lever. When either of the two statements are correct, it will toggle the lever. You can use the output of this lever to power another sign, possibly making complete logic routines using minecarts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Use cases === &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Generally you won&#039;t need to use statements. The internal path finding can do most of the required path finding, and anything else can be done using redstone. But, if you have to categorize carts based on certain properties, using these statements is inevitable. A few examples where this can be used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Remove empty minecarts ==== &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
If the minecart contains no passenger, a destructor sign is powered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Send the train once it contains items ==== &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Once the train contains an item, power a station sign.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Send a train to a certain player ==== &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
If the cart is owned by a set player, the track is toggled to lead to that player.&lt;br /&gt;
&lt;br /&gt;
== Syntax == &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
You can put a !-sign in front of the statement to act as a NOT. You can read &#039;the train&#039; as &#039;the cart&#039; if [cart] is used on the first line. Statements with the format &#039;&#039;name@&amp;lt;array&amp;gt;&#039;&#039; are called &#039;&#039;&#039;array statements&#039;&#039;&#039; and can operate on multiple of a certain property. For example, &#039;&#039;i@wood&#039;&#039; operates on the items in the train, and checks if there is wood in there. For multiple items, delimit using a semicolon ( ; ), for example &#039;&#039;ed@north;south&#039;&#039; will match trains moving towards north or south only.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Most statements also support &#039;&#039;&#039;operators&#039;&#039;&#039;. Operators are:&lt;br /&gt;
* = equals&lt;br /&gt;
* != not equals&lt;br /&gt;
* &amp;gt;= greater or equal than&lt;br /&gt;
* &amp;lt;= smaller or equal than&lt;br /&gt;
* &amp;gt; greater than&lt;br /&gt;
* &amp;lt; smaller than&lt;br /&gt;
To use an operator, append it after the statement. For example, &#039;&#039;minecarts&amp;gt;=5&#039;&#039; will check if there are more than 5 minecarts in the train. &#039;&#039;trainsize&amp;gt;=5&#039;&#039; also counts storage and powered minecarts. You can even use it in arrays. Using &#039;&#039;i@stone=64&#039;&#039; you can check if there are exactly 64 stone in the train. All statements that can be interpreted as an amount have operator support, including counting the amount of mobs in the train: &#039;&#039;m@cow&amp;gt;5&#039;&#039;. If no operator is given the default operator &#039;&#039;&amp;gt;0&#039;&#039; is used, or in the case of items, the amount that is specified in front of the item name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Statement&lt;br /&gt;
! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| passenger&lt;br /&gt;
| The train has a passenger&lt;br /&gt;
|-&lt;br /&gt;
| items&lt;br /&gt;
| The train contains a chest and has items&lt;br /&gt;
|-&lt;br /&gt;
| empty&lt;br /&gt;
| The train has no passenger and no items&lt;br /&gt;
|-&lt;br /&gt;
| fuel&lt;br /&gt;
| The train contains a furnace which has fuel&lt;br /&gt;
|-&lt;br /&gt;
| trainsize&lt;br /&gt;
| The train cart count matches (e.g.: trainsize&amp;gt;=3)&lt;br /&gt;
|-&lt;br /&gt;
| chest_minecart&lt;br /&gt;
| The train has a number of chest minecarts (e.g.: chest_minecart&amp;gt;=1). Also works for hoppers/powered/etc. types.&lt;br /&gt;
|-&lt;br /&gt;
| velocity&amp;lt;br&amp;gt;speed&lt;br /&gt;
| The train velocity (movement speed) can be evaluated, or gets if the train is moving&lt;br /&gt;
|-&lt;br /&gt;
| powered&lt;br /&gt;
| The train contains a powered minecart&lt;br /&gt;
|-&lt;br /&gt;
| storage&lt;br /&gt;
| The train contains a storage minecart&lt;br /&gt;
|-&lt;br /&gt;
| minecart&lt;br /&gt;
| The train contains a regular minecart&lt;br /&gt;
|-&lt;br /&gt;
| redstone&lt;br /&gt;
| The sign is powered by redstone&lt;br /&gt;
|-&lt;br /&gt;
| maxspeed&lt;br /&gt;
| Evaluate the maximum speed set&lt;br /&gt;
|-&lt;br /&gt;
| mobenter&lt;br /&gt;
| Checks the mob enter property&lt;br /&gt;
|-&lt;br /&gt;
| playerenter&lt;br /&gt;
| Checks the player enter property&lt;br /&gt;
|-&lt;br /&gt;
| playerexit&lt;br /&gt;
| Checks the player exit property&lt;br /&gt;
|-&lt;br /&gt;
| destination&lt;br /&gt;
| Checks if a destination is set on the train&lt;br /&gt;
|-&lt;br /&gt;
| random&lt;br /&gt;
| Has a 50% chance of turning on&lt;br /&gt;
|-&lt;br /&gt;
| n@&amp;lt;names&amp;gt;&amp;lt;br&amp;gt;name@&amp;lt;names&amp;gt;&lt;br /&gt;
| The train name equals one of the names specified&lt;br /&gt;
|-&lt;br /&gt;
| i@&amp;lt;items&amp;gt;&lt;br /&gt;
| The train contains one of the items specified&lt;br /&gt;
|-&lt;br /&gt;
| o@&amp;lt;owner&amp;gt;&lt;br /&gt;
| The train contains this owner&lt;br /&gt;
|-&lt;br /&gt;
| d@&amp;lt;destination&amp;gt;&lt;br /&gt;
| One cart in the train has this destination set&lt;br /&gt;
|-&lt;br /&gt;
| p@&amp;lt;player&amp;gt;&lt;br /&gt;
| The train is occupied by this player&lt;br /&gt;
|-&lt;br /&gt;
| m@&amp;lt;mobnames&amp;gt;&lt;br /&gt;
| The train is occupied by one of these mobs&lt;br /&gt;
|-&lt;br /&gt;
| pi@&amp;lt;items&amp;gt;&lt;br /&gt;
| One of the players has one of the items in his inventory&lt;br /&gt;
|-&lt;br /&gt;
| ph@&amp;lt;items&amp;gt;&lt;br /&gt;
| One of the players has one of the items in his hand&lt;br /&gt;
|-&lt;br /&gt;
| ed@&amp;lt;directions&amp;gt;&lt;br /&gt;
|The minecart is moving into a given direction (switcher: upon entering the sign)&lt;br /&gt;
|-&lt;br /&gt;
| rs@&amp;lt;directions&amp;gt;&lt;br /&gt;
| The sign is powered from one of the directions specified&lt;br /&gt;
|-&lt;br /&gt;
| rand@0.3&lt;br /&gt;
| Has a 30% chance of turning on (instead of the default 50%) (1.0 is equivalent to 100%)&lt;br /&gt;
|-&lt;br /&gt;
| anything&amp;lt;br&amp;gt;t@&amp;lt;tags&amp;gt;&lt;br /&gt;
| For anything else the plugin checks if the train has it set as a tag&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== And logic == &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Since everything is evaluated as an OR, how can you check if the train has two of the same? The easiest method is to invert two statements, toggling a lever which powers an inverted sign. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| {{sign|[cart]|switcher|!o@me|!a}}&lt;br /&gt;
| {{sign|[!cart]|chest in|||}}&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|  If &#039;&#039;&#039;not&#039;&#039;&#039; owned by &#039;me&#039; or &#039;&#039;&#039;not&#039;&#039;&#039; has tag &#039;a&#039; then &#039;&#039;&#039;not&#039;&#039;&#039; transfer items&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|  If owned by &#039;me&#039; and has tag &#039;a&#039; transfer items&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
If this proves too hard to do (you need to evaluate more than 3 statements), you will have to use a redstone circuit and multiple switcher signs instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tags == &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
For all statements other than in the syntax table above, the name is compared to tags on the train. To find the tags, you can use wildcards to check for multiple tags at once:&lt;br /&gt;
  * - has a tag&lt;br /&gt;
  !* - has no tags&lt;br /&gt;
  *a - has a tag ending with &#039;a&#039;&lt;br /&gt;
  a* - has a tag starting with &#039;a&#039;&lt;br /&gt;
  *a* - has a tag containing &#039;a&#039;&lt;br /&gt;
  *ab*cd* - has a tag containing both &#039;ab&#039; and &#039;cd&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
For example, the following sign uses tags to switch tracks. If the train contains a tag starting with &#039;&#039;station&#039;&#039; it goes left, if it contains a tag containing &#039;&#039;main&#039;&#039; it will go right. If it contains both, it will go straight ahead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{{sign|[!train]|switcher|station*|*main*}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=Map_Display&amp;diff=2460</id>
		<title>Map Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=Map_Display&amp;diff=2460"/>
		<updated>2023-09-26T00:52:23Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Update Minecraft Wiki links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:mapdisplay_menu.png|thumb|Player holding a map display item, with an interactive menu shown]]&lt;br /&gt;
&#039;&#039;&#039;Map displays&#039;&#039;&#039; are special interactive displays supplied by BKCommonLib. Besides providing an API to draw onto the map(s), it can perform task scheduling, receive player click or movement input, and automatically tile neighbouring maps on item frames to display a larger image. Each display is automatically spun up based on [https://minecraft.wiki/w/NBT_format metadata] in the item itself. Additional metadata can be stored in the item, allowing for persistent storage.&lt;br /&gt;
&lt;br /&gt;
==For Developers==&lt;br /&gt;
Want to start using Map Displays in your next project? [[Map Display/API|Visit this page about the API]].&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
===Controls===&lt;br /&gt;
When enabled in the display, players can provide input through steering controls. Typically, W/A/S/D are used to navigate different elements in the map, jump (spacebar) is used to enter a menu or activate a button, and sneaking (shift) is used to exit a menu. Holding the sneak button allows for slowly walking around while holding the map item.&lt;br /&gt;
&lt;br /&gt;
Player movement is not intercepted when the player holds the map item in the off-hand. To quickly switch between moving around and using the map, you can swap the map between hands (F). This allows players to view the map while walking/flying around the world.&lt;br /&gt;
&lt;br /&gt;
===Tiling===&lt;br /&gt;
[[File:Mapdisplay_tiling.png|thumb|A map display showing a debug image, rendered onto multiple connected item frames]]&lt;br /&gt;
For decorative purposes, map displays can also be put inside [https://minecraft.wiki/w/Item_Frame item frames]. When the same map item is placed into neighbouring item frames, the maps combine to provide a larger canvas. The display is re-initialized when resizing happens. All drawing operations inside the map display instance operate on a single canvas that automatically writes to multiple maps at once.&lt;br /&gt;
&lt;br /&gt;
Individual maps can be rotated by clicking, which can also be disabled by the map display by handling the click action.&lt;br /&gt;
&lt;br /&gt;
===Persistence===&lt;br /&gt;
All configuration for a map display is typically stored in the map item. By cloning the item, the same display can be created in different places. It is also possible to give a pre-configured item to players.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
===Layers===&lt;br /&gt;
The map display API provides a set of maximum 256 layers of depth. This makes it easy to draw foregrounds onto backgrounds, allowing for the foreground to be cleared while retaining the background. This feature is heavily used by widgets. Each layer offers many different drawing routines, such as rendering shapes, images, font, polygons, 3d models, blend modes and using a 16-bit depth buffer.&lt;br /&gt;
&lt;br /&gt;
===Colors===&lt;br /&gt;
The full color palette of Minecraft is supported, with an efficient map color palette to translate from RGB color values.&lt;br /&gt;
&lt;br /&gt;
===Color blending===&lt;br /&gt;
Drawing can be done using simple color blending modes:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! Name !! Description&lt;br /&gt;
 |-&lt;br /&gt;
 | NONE || Overwrites all previous pixels in the area&lt;br /&gt;
 |-&lt;br /&gt;
 | OVERLAY || Writes on top of previous pixels, unless the pixel being drawn is transparent&lt;br /&gt;
 |-&lt;br /&gt;
 | AVERAGE || Takes the color average of the previous and new pixel being drawn&lt;br /&gt;
 |-&lt;br /&gt;
 | ADD || Adds the color values of the previous and new pixel being drawn&lt;br /&gt;
 |-&lt;br /&gt;
 | SUBTRACT || Subtracts the color difference of the previous and new pixel being drawn&lt;br /&gt;
 |-&lt;br /&gt;
 | MULTIPLY || Multiplies the color value of the previous and new pixel being drawn&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Fonts===&lt;br /&gt;
By default BKCommonLib provides a default Minecraft font, and a tiny 3x5 font which is most suitable for displaying small numbers.&lt;br /&gt;
It does support all standard System Java AWT fonts as well, though quality may suffer.&lt;br /&gt;
&lt;br /&gt;
===Depth buffer===&lt;br /&gt;
[[File:Mapdisplay_maplands.png|thumb|Maplands uses a depth buffer to render the world progressively]]&lt;br /&gt;
A depth buffer can be enabled for a layer. By specifying the depth of the current drawing operation, it can be drawn on top of previously drawn contents while preserving detail based on depth. This feature is used by [https://www.spigotmc.org/resources/maplands.46404/ Maplands] to render block tiles of the world. Unlike layers, there are up to 65536 levels of depth here, but drawing a higher layer on a lower layer erases the lower layer&#039;s contents.&lt;br /&gt;
&lt;br /&gt;
===Resource packs===&lt;br /&gt;
Resource packs can be loaded on the server to draw 3d models of blocks and item icons. The vanilla Minecraft client is automatically downloaded when needed to draw vanilla blocks and items. For this, a 3d model drawing function is made available, together with some configuration of the ambient and directional light.&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
Widgets are little control elements that can be added to the display, or other widgets recursively, to create interactive menus. It provides an automatic navigation system with activation, focus, rendering routines, key input, and more. Most of the interactive menus use widgets to abstract away all the complicated rendering and behavior occurring behind the scenes.&lt;br /&gt;
&lt;br /&gt;
===Markers===&lt;br /&gt;
A basic API is available to display one or more map markers on various coordinates of the display. Markers automatically move between maps on larger displays, and changes to marker properties are automatically synchronized.&lt;br /&gt;
&lt;br /&gt;
==Performance==&lt;br /&gt;
In general the map display controller system is very well optimized. One aspect which may cause a performance drop is the automatic tiling behavior, since that requires passive lookups of item frames as chunks load and unload. This can be turned off in the BKCommonLib configuration file, in case no such tiled displays are in use.&lt;br /&gt;
&lt;br /&gt;
==Map Id==&lt;br /&gt;
Map displays &#039;&#039;&#039;do not&#039;&#039;&#039; use map id&#039;s. Instead, they use a separate &#039;UUID&#039; property, which is the same for all maps displaying the same contents. The Map Id is assigned automatically, in the background, by BKCommonLib. You do not touch or work with the map id, because it can change as new maps from other plugins are loaded in.&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=BKCommonLib/EventsAndListeners&amp;diff=2459</id>
		<title>BKCommonLib/EventsAndListeners</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=BKCommonLib/EventsAndListeners&amp;diff=2459"/>
		<updated>2023-09-26T00:51:17Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Change old dev.bukkit.org wiki link to internal wikilink&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[BKCommonLib|« Go back]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
BKCommonLib keeps track of several server events that can not be monitored using Bukkit alone. The following events (and listeners) are available:&lt;br /&gt;
&lt;br /&gt;
==Entities==&lt;br /&gt;
The following entity related events are available:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/bergerkiller/BKCommonLib/blob/master/src/main/java/com/bergerkiller/bukkit/common/events/EntityAddEvent.java EntityAddEvent] - when an entity is added to the server&lt;br /&gt;
* [https://github.com/bergerkiller/BKCommonLib/blob/master/src/main/java/com/bergerkiller/bukkit/common/events/EntityRemoveEvent.java EntityRemoveEvent] - when an entity is removed from a world&lt;br /&gt;
* [https://github.com/bergerkiller/BKCommonLib/blob/master/src/main/java/com/bergerkiller/bukkit/common/events/EntityRemoveFromServerEvent.java EntityRemoveFromServerEvent] - when an entity is permanently removed from the server&lt;br /&gt;
* [https://github.com/bergerkiller/BKCommonLib/blob/master/src/main/java/com/bergerkiller/bukkit/common/events/EntityMoveEvent.java EntityMoveEvent] - fired every tick to update entity movement. This event is optimized.&lt;br /&gt;
&lt;br /&gt;
==Packets==&lt;br /&gt;
The following events are available when registering a [[BKCommonLib/Packets|PacketListener]]:&lt;br /&gt;
* [https://github.com/bergerkiller/BKCommonLib/blob/master/src/main/java/com/bergerkiller/bukkit/common/events/PacketReceiveEvent.java PacketReceiveEvent] when a packet is received from the client&lt;br /&gt;
* [https://github.com/bergerkiller/BKCommonLib/blob/master/src/main/java/com/bergerkiller/bukkit/common/events/PacketSendEvent.java PacketSendEvent] when a packet is about to be sent to the client&lt;br /&gt;
&lt;br /&gt;
==Internal==&lt;br /&gt;
Developers should ignore these events, as they are mainly used to keep track of internal BKCommonLib changes:&lt;br /&gt;
* [https://github.com/bergerkiller/BKCommonLib/blob/master/src/main/java/com/bergerkiller/bukkit/common/internal/TimingsListener.java TimingsListener] for keeping track of execution times on the server&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=BKCommonLib/ForDevelopers&amp;diff=2458</id>
		<title>BKCommonLib/ForDevelopers</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=BKCommonLib/ForDevelopers&amp;diff=2458"/>
		<updated>2023-09-26T00:45:18Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Mark page as outdated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[BKCommonLib|« Go back]]&lt;br /&gt;
{{Update|BKCommonLib|18 November 2020|reason=BKCommonLib is now a Gradle project, not a Maven project.|date=16 February 2023}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
This is a page where help is given for new and existing developers of BKCommonLib and everything related to it. If something needs to be redone or fixed, you can find information regarding it here.&lt;br /&gt;
&lt;br /&gt;
==BKCommonLib project structure==&lt;br /&gt;
BKCommonLib is a maven project - you need to support it to contribute to it. If you are using the Eclipse IDE, you can install [https://projects.eclipse.org/projects/technology.m2e m2eclipse] so you can properly import maven projects. To install this software, go to the marketplace in the Eclipse GUI and install it from there. See also: [https://marketplace.eclipse.org/marketplace-client-intro installation instructions].&lt;br /&gt;
&lt;br /&gt;
Upon first looking over all packages and classes it may seem overwhelming - and it is. BKCommonLib is extremely large, but it has a fixed structure.&lt;br /&gt;
&lt;br /&gt;
* Internal and server packages: try not to touch these, here is where all our CraftBukkit-specific logic resides&lt;br /&gt;
* Reflection: here is where we put all fields and methods contained within CraftBukkit so others can access it safely&lt;br /&gt;
* Proxies and Bases: here we store all base classes that can be extended or worked with. Includes math utility classes such as vectors&lt;br /&gt;
* [[BKCommonLib/Conversion|Conversion]]: here are all convertors meant for converting one datatype to the other&lt;br /&gt;
* Collections: here we store all special type of collections, such as those that convert one type to the other dynamically&lt;br /&gt;
* [[BKCommonLib/CommonEntity|Entity]] and [[BKCommonLib/Controller|Controller]]: all Entity-related utility classes which add new functionality, of which controllers&lt;br /&gt;
* [[BKCommonLib/EventsAndListeners|Events]]: Some events plugins can use, fired by BKCommonLib. See also: internal.&lt;br /&gt;
* [[BKCommonLib/Localization|Localization]] and [[BKCommonLib/PermissionDefaults|Permissions]]: speaks for itself, base classes for name given&lt;br /&gt;
* [[BKCommonLib/ConfigurationAPI|Config]] and [[BKCommonLib/NBTTagAPI|NBT]]: speaks for itself, helper classes for dealing with configuration/file data storage/NBT tags&lt;br /&gt;
* [[BKCommonLib/Scoreboards|Scoreboards]]: the Scoreboards API of BKCommonLib&lt;br /&gt;
* [[BKCommonLib/TabView|Tab]]: the Tab API of BKCommonLib&lt;br /&gt;
* Wrappers: for working with internal classes through a secure and non-reflection ridden layer&lt;br /&gt;
* [[BKCommonLib/General|Utils]]: All classes contain static utility methods that can be used for whatever purpose you seek&lt;br /&gt;
If you need to fix a bug or want to have a new feature, your first step is looking at which packages are or could be affected. Please don&#039;t make new packages for already covered things, it works confusing. If you plan on moving a class around, be sure to keep a (deprecated) redirecting proxy class behind so depending plugins don&#039;t stop working all of a sudden.&lt;br /&gt;
&lt;br /&gt;
==BKCommonLib build process==&lt;br /&gt;
When first starting to work with it, you may notice that there are no package versions in the net.minecraft.server and org.bukkit.craftbukkit imports. The resulting build, however, does. How come? Well, to skip the process of manually updating all versions, we do multiple things:&lt;br /&gt;
&lt;br /&gt;
* Use reflection where possible so we don&#039;t need these imports&lt;br /&gt;
* Use [https://github.com/bergerkiller/Spinot Spinot] instead of CraftBukkit/Spigot to build against&lt;br /&gt;
* Use the &#039;maven-shade-plugin&#039; to turn all imports to the proper versioned imports instead&lt;br /&gt;
In addition we have several other dependencies and respective repositories for per-plugin compatibility.&lt;br /&gt;
&lt;br /&gt;
==Jenkins build server and GitHub==&lt;br /&gt;
We use GitHub to host our projects and have our own CI build server to build the GitHub projects on. Here is a checklist to see whether the Jenkins build server is ready to go:&lt;br /&gt;
&lt;br /&gt;
* GitHub, Git server, Git client and other Git-related plugins are installed and set active (manage/manage plugins)&lt;br /&gt;
* JDK 6u38 and 7 are installed (manage/configure system)&lt;br /&gt;
* Git account information including a valid SSH key is set and hooks are set on manual (manage/configure system)&lt;br /&gt;
Per job (configuration):&lt;br /&gt;
&lt;br /&gt;
* GitHub project path is set and Sourcecode management is set on &#039;git&#039; and configured fully&lt;br /&gt;
* Repository URL and GitHub project path is the same (&amp;lt;nowiki&amp;gt;http://github.com/etc/etc&amp;lt;/nowiki&amp;gt;)&lt;br /&gt;
* &#039;Build when changes are sent&#039; checked, nothing else by default&lt;br /&gt;
* JDK 6 or 7 is selected properly for building the project (usually 6)&lt;br /&gt;
* Github plugin hook url (&amp;lt;nowiki&amp;gt;http://sitename.something/github-webhook/&amp;lt;/nowiki&amp;gt;) is added to service hooks on the GitHub project&lt;br /&gt;
* Post-build step &#039;archive artifacts&#039; is set (output: target/*.jar)&lt;br /&gt;
* Multiple branches? Be sure to specify &#039;origin/master&#039; if needed!&lt;br /&gt;
Common errors and issues:&lt;br /&gt;
&lt;br /&gt;
* Dependency issues on the server and not locally: delete the .m2/repository/* contents locally and refresh&lt;br /&gt;
* Compilation failure: change between different compiler versions until it works&lt;br /&gt;
* This is not what I wanted to build!: make sure it isn&#039;t building the wrong branch&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=BKCommonLib/Metrics&amp;diff=2457</id>
		<title>BKCommonLib/Metrics</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=BKCommonLib/Metrics&amp;diff=2457"/>
		<updated>2023-09-26T00:43:11Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Mark page as outdated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[BKCommonLib|« Go back]]&lt;br /&gt;
{{Update|BKCommonLib|10 June 2021|reason=BKCommonLib now uses bStats metrics.|date=16 June 2023}}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
[https://dev.bukkit.org/linkout?remoteUrl=https%253a%252f%252fmcstats.org%252f Metrics] is a service provided by &#039;&#039;&#039;Hidendra&#039;&#039;&#039; to keep track of plugin statistics. It allows plugin developers to see who uses their plugin the most, and to keep track of certain features. This makes it easier to decide on new features and to see what parts of the plugin really matter to most people. The data is sent anonymously, that is, no server IP/player names/personal information is sent to the database.&lt;br /&gt;
&lt;br /&gt;
You do not want to participate in this as a server? Aw...oh well, you can opt-out on Metrics globally in the metrics configuration file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;plugins\PluginMetrics\config.yml &amp;lt; change opt-out: to true.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Metrics in BKCommonLib==&lt;br /&gt;
A Metrics implementation, almost entirely similar as the one provided by mcstats, is included in BKCommonLib. It provides an easy API layer to set up the data you wish to send to the server. Instead of scheduling a task to update it every other time, or having synchronization issues, the Metrics implementation in BKCommonLib works slightly differently.&lt;br /&gt;
&lt;br /&gt;
==Creating Metrics for your plugin==&lt;br /&gt;
How to obtain a [https://github.com/bergerkiller/BKCommonLib/blob/master/src/main/java/com/bergerkiller/bukkit/common/metrics/Metrics.java Metrics] class instance to use it in your plugin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===PluginBase===&lt;br /&gt;
If you use [[BKCommonLib/PluginBase|PluginBase]] for your plugin, all you have to do is add &#039;metrics: true&#039; to the plugin.yml of the plugin. After that you can obtain the Metrics instance using the provided &#039;&#039;&#039;getMetrics()&#039;&#039;&#039; method. Before using it, check that metrics is available (and enabled) using the &#039;&#039;&#039;hasMetrics()&#039;&#039;&#039; method, otherwise errors will occur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Manually===&lt;br /&gt;
To manually create a new Metrics instance, use the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Metrics metrics = Metrics.initialize(this);&lt;br /&gt;
if (metrics != null) {&lt;br /&gt;
    // Add your graphs here&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can also create a new Metrics instance using the provided constructor, and handle the errors yourself. In that case, make sure you also call start() once all graphs are added. The initialize method does that for you.&lt;br /&gt;
&lt;br /&gt;
==Adding graphs==&lt;br /&gt;
Graphs in this implementation work slightly different than the ones found elsewhere. In BKCommonLib, Metrics graphs contain an &#039;&#039;&#039;onUpdate&#039;&#039;&#039; method in which the values can be set. It also does not contain a &#039;Plotter&#039; class, instead it uses a map of values. it is up to the plugin to fill or update the data in the graph. The &#039;&#039;&#039;onUpdate&#039;&#039;&#039; method is called on the main thread (synchronized), so it is thread-safe to access Bukkit or plugin resources.&lt;br /&gt;
&lt;br /&gt;
To add a graph, use &#039;&#039;&#039;Metrics.addGraph&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Changing plotter values in graphs==&lt;br /&gt;
A plotter value is basically a single value for part of a graph displayed on [https://mcstats.org mcstats.org]. For example, if you have a Commands graph, you can add plotter values for all commands the plugin provides, mapped to the amount of times it was performed.&lt;br /&gt;
&lt;br /&gt;
Plotter values have to be numeric (int, double, float, etc.), non-numeric text is not possible simply because it can&#039;t be displayed in a graph.&lt;br /&gt;
&lt;br /&gt;
There are several methods to change &#039;plotter&#039; values:&lt;br /&gt;
* &#039;&#039;&#039;clearPlotters&#039;&#039;&#039; - removes all set plotters&lt;br /&gt;
* &#039;&#039;&#039;togglePlotter&#039;&#039;&#039; - Adds a plotter with value &#039;1&#039; if enabled, or removes the plotter if disabled&lt;br /&gt;
* &#039;&#039;&#039;addPlotter&#039;&#039;&#039; - Adds a plotter mapping the value to a key&lt;br /&gt;
&lt;br /&gt;
Example graph implementation (found in enable() of a PluginBase):&lt;br /&gt;
&amp;lt;pre&amp;gt;// Total server memory&lt;br /&gt;
getMetrics().addGraph(new Graph(&amp;quot;Total server memory&amp;quot;) {&lt;br /&gt;
    @Override&lt;br /&gt;
    public void onUpdate(Plugin plugin) {&lt;br /&gt;
        clearPlotters();&lt;br /&gt;
        // Get server total memory in MB (&amp;gt;&amp;gt; 20 = / (1024 * 1024))&lt;br /&gt;
        final long mem = Runtime.getRuntime().totalMemory() &amp;gt;&amp;gt; 20;&lt;br /&gt;
        final String key;&lt;br /&gt;
        if (mem &amp;lt;= 512) {&lt;br /&gt;
            key = &amp;quot;0-512 MB&amp;quot;;&lt;br /&gt;
        } else if (mem &amp;lt;= 1024) {&lt;br /&gt;
            key = &amp;quot;512-1024 MB&amp;quot;;&lt;br /&gt;
        } else if (mem &amp;lt;= 2048) {&lt;br /&gt;
            key = &amp;quot;1024-2048 MB&amp;quot;;&lt;br /&gt;
        } else if (mem &amp;lt;= 4096) {&lt;br /&gt;
            key = &amp;quot;2048-4096 MB&amp;quot;;&lt;br /&gt;
        } else if (mem &amp;lt;= 8192) {&lt;br /&gt;
            key = &amp;quot;4096-8192 MB&amp;quot;;&lt;br /&gt;
        } else if (mem &amp;lt;= 16384) {&lt;br /&gt;
            key = &amp;quot;8-16 GB&amp;quot;;&lt;br /&gt;
        } else {&lt;br /&gt;
            key = &amp;quot;16+ GB&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        togglePlotter(key, true);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/pre&amp;gt;&lt;br /&gt;
This produces a graph as follows (pie chart): Total server memory - Pie chart&lt;br /&gt;
&lt;br /&gt;
==Default graph implementations==&lt;br /&gt;
BKCommonLib also includes some &#039;common&#039; Graph implementations. These are:&lt;br /&gt;
* [https://github.com/bergerkiller/BKCommonLib/blob/master/src/main/java/com/bergerkiller/bukkit/common/metrics/MyDependingPluginsGraph.java MyDependingPluginsGraph] - shows the plugins depending on your plugin&lt;br /&gt;
* [https://github.com/bergerkiller/BKCommonLib/blob/master/src/main/java/com/bergerkiller/bukkit/common/metrics/SoftDependenciesGraph.java SoftDependenciesGraph] - shows the plugins enabled that your plugin has a soft dependency on&lt;br /&gt;
&lt;br /&gt;
Important notes&lt;br /&gt;
* &#039;&#039;&#039;onUpdate&#039;&#039;&#039; is not called if the server opted out, also if the server opted out after your metrics instance was started.&lt;br /&gt;
* &#039;&#039;&#039;getMetrics()&#039;&#039;&#039; throws an exception if no metrics is available - use &#039;&#039;&#039;hasMetrics()&#039;&#039;&#039; before using it&lt;br /&gt;
* To use metrics in &#039;&#039;&#039;PluginBase&#039;&#039;&#039;, add the &#039;&#039;&#039;metrics: true&#039;&#039;&#039; to the plugin.yml. By default metrics is disabled.&lt;br /&gt;
* Only use numeric plotter values&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=Template:Update&amp;diff=2456</id>
		<title>Template:Update</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=Template:Update&amp;diff=2456"/>
		<updated>2023-09-26T00:40:00Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;Template to mark a site that needs updating&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Update&lt;br /&gt;
|plugin={{{plugin}}}&lt;br /&gt;
|reason={{{reason}}}&lt;br /&gt;
|date={{{date}}}&lt;br /&gt;
|2={{{2}}}&lt;br /&gt;
}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding-right: 10px; padding-left: 10px;&amp;quot; | Parameter:&lt;br /&gt;
! style=&amp;quot;padding-right: 10px; padding-left: 10px;&amp;quot; | Description:&lt;br /&gt;
! style=&amp;quot;padding-right: 10px; padding-left: 10px;&amp;quot; | Default:&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; style=&amp;quot;text-align: left; padding-left: 10px;&amp;quot;| &#039;&#039;plugin&#039;&#039;&lt;br /&gt;
| style=&amp;quot;align: center; padding-right: 10px; padding-left: 10px;&amp;quot; | The plugin that this page is related to.&lt;br /&gt;
| style=&amp;quot;align: center; padding-right: 10px; padding-left: 10px;&amp;quot; | No text.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; style=&amp;quot;text-align: left; padding-left: 10px;&amp;quot;| &#039;&#039;reason&#039;&#039;&lt;br /&gt;
| style=&amp;quot;align: center; padding-right: 10px; padding-left: 10px;&amp;quot; | Reason why the page is outdated. (optional)&lt;br /&gt;
| style=&amp;quot;align: center; padding-right: 10px; padding-left: 10px;&amp;quot; | No text.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; style=&amp;quot;text-align: left; padding-left: 10px;&amp;quot;| &#039;&#039;date&#039;&#039;&lt;br /&gt;
| style=&amp;quot;align: center; padding-right: 10px; padding-left: 10px;&amp;quot; | Date when the page was tagged as outdated. (optional)&lt;br /&gt;
| style=&amp;quot;align: center; padding-right: 10px; padding-left: 10px;&amp;quot; | No text.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; style=&amp;quot;text-align: left; padding-left: 10px;&amp;quot;| &#039;&#039;2&#039;&#039;&lt;br /&gt;
| style=&amp;quot;align: center; padding-right: 10px; padding-left: 10px;&amp;quot; | Date when the page was last updated. (optional)&lt;br /&gt;
| style=&amp;quot;align: center; padding-right: 10px; padding-left: 10px;&amp;quot; | No text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
=== No optional arguments ===&lt;br /&gt;
{{Update|BKCommonLib}}&lt;br /&gt;
&lt;br /&gt;
=== All optional arguments ===&lt;br /&gt;
{{Update|BKCommonLib|October 2021|reason=Minecraft 1.18 has expanded world height, and the height boundaries may no longer apply.|date=December 2021}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{| align=center style=&amp;quot;background: #FFF; border: 1px solid #aaaaaa; padding: .2em; margin-bottom: 3px; font-size: 93%; width: 60%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding-right: 4px; padding-left: 4px; width: 80px;&amp;quot; | [[File:Diamond pickaxe.png|80px|Outdated|link=Template:Update]]&lt;br /&gt;
| &#039;&#039;&#039;This page is outdated&#039;&#039;&#039;&lt;br /&gt;
It was written for an older version of [[{{{part|{{{1|}}}}}}]] and may not apply to the most recent version. {{#if:{{{reason|}}}|{{{reason}}}|}}&lt;br /&gt;
{{#if:{{{date|}}}|&amp;lt;small&amp;gt;&#039;&#039;({{{date}}})&#039;&#039;&amp;lt;/small&amp;gt;}}&lt;br /&gt;
{{#if:{{{2|}}}|&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt; Last update: {{{2}}}&amp;lt;/small&amp;gt;}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&amp;lt;includeonly&amp;gt;[[Category:Outdated Articles]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=Template:Update&amp;diff=2455</id>
		<title>Template:Update</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=Template:Update&amp;diff=2455"/>
		<updated>2023-09-26T00:39:28Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Add update template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;Template to mark a site that needs updating&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Update&lt;br /&gt;
|plugin={{{plugin}}}&lt;br /&gt;
|reason={{{reason}}}&lt;br /&gt;
|date={{{date}}}&lt;br /&gt;
|2={{{2}}}&lt;br /&gt;
}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parameters ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;padding-right: 10px; padding-left: 10px;&amp;quot; | Parameter:&lt;br /&gt;
! style=&amp;quot;padding-right: 10px; padding-left: 10px;&amp;quot; | Description:&lt;br /&gt;
! style=&amp;quot;padding-right: 10px; padding-left: 10px;&amp;quot; | Default:&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; style=&amp;quot;text-align: left; padding-left: 10px;&amp;quot;| &#039;&#039;plugin&#039;&#039;&lt;br /&gt;
| style=&amp;quot;align: center; padding-right: 10px; padding-left: 10px;&amp;quot; | The plugin that this page is related to.&lt;br /&gt;
| style=&amp;quot;align: center; padding-right: 10px; padding-left: 10px;&amp;quot; | No text.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; style=&amp;quot;text-align: left; padding-left: 10px;&amp;quot;| &#039;&#039;reason&#039;&#039;&lt;br /&gt;
| style=&amp;quot;align: center; padding-right: 10px; padding-left: 10px;&amp;quot; | Reason why the page is outdated. (optional)&lt;br /&gt;
| style=&amp;quot;align: center; padding-right: 10px; padding-left: 10px;&amp;quot; | No text.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; style=&amp;quot;text-align: left; padding-left: 10px;&amp;quot;| &#039;&#039;date&#039;&#039;&lt;br /&gt;
| style=&amp;quot;align: center; padding-right: 10px; padding-left: 10px;&amp;quot; | Date when the page was tagged as outdated. (optional)&lt;br /&gt;
| style=&amp;quot;align: center; padding-right: 10px; padding-left: 10px;&amp;quot; | No text.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; style=&amp;quot;text-align: left; padding-left: 10px;&amp;quot;| &#039;&#039;2&#039;&#039;&lt;br /&gt;
| style=&amp;quot;align: center; padding-right: 10px; padding-left: 10px;&amp;quot; | Date when the page was last updated. (optional)&lt;br /&gt;
| style=&amp;quot;align: center; padding-right: 10px; padding-left: 10px;&amp;quot; | No text.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
=== No optional arguments ===&lt;br /&gt;
{{Update|BKCommonLib}}&lt;br /&gt;
&lt;br /&gt;
=== All optional arguments ===&lt;br /&gt;
{{Update|BKCommonLib|October 2021|reason=Minecraft 1.18 has expanded world height, and the height boundaries may no longer apply.|date=December 2021}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{| align=center style=&amp;quot;background: #FFF; border: 1px solid #aaaaaa; padding: .2em; margin-bottom: 3px; font-size: 93%; width: 60%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding-right: 4px; padding-left: 4px; width: 80px;&amp;quot; | [[File:Diamond pickaxe.png|80px|Outdated|link=Template:Update]]&lt;br /&gt;
| &#039;&#039;&#039;This page is outdated&#039;&#039;&#039;&lt;br /&gt;
It was written for an older version of [[{{{part|{{{1|}}}}}}]] and nay not apply to the most recent version. {{#if:{{{reason|}}}|{{{reason}}}|}}&lt;br /&gt;
{{#if:{{{date|}}}|&amp;lt;small&amp;gt;&#039;&#039;({{{date}}})&#039;&#039;&amp;lt;/small&amp;gt;}}&lt;br /&gt;
{{#if:{{{2|}}}|&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt; Last update: {{{2}}}&amp;lt;/small&amp;gt;}}&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&amp;lt;includeonly&amp;gt;[[Category:Outdated Articles]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=BKCommonLib/PluginBase&amp;diff=2454</id>
		<title>BKCommonLib/PluginBase</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=BKCommonLib/PluginBase&amp;diff=2454"/>
		<updated>2023-09-25T23:59:09Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Update redirection links to main article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[BKCommonLib|« Go back]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
For more information, see also:&lt;br /&gt;
&lt;br /&gt;
* [[BKCommonLib/Localization|Localization]]&lt;br /&gt;
* [[BKCommonLib/PermissionDefaults|Permission Defaults]]&lt;br /&gt;
* [[BKCommonLib/Metrics|Metrics]]&lt;br /&gt;
PluginBase is a basic JavaPlugin base class that eases the use of Localization, Permissions, error handling, logging and more. The base implementation takes care of a lot of things going on in the background, including a BKCommonLib compatibility check.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
All common plugin routines are taken care of. They will all be listed below. To use PluginBase in your plugin, simply instantiate it as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;public class MyPlugin extends PluginBase {&lt;br /&gt;
    @Override&lt;br /&gt;
    public void enable() {&lt;br /&gt;
        // Enable logic&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void disable() {&lt;br /&gt;
        // Disable logic&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public boolean command(CommandSender sender, String command, String[] args) {&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public int getMinimumLibVersion() {&lt;br /&gt;
        return Common.VERSION;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
==BKCommonLib routines==&lt;br /&gt;
getMinimumLibVersion() has to be overrided when using this base class. This method tells BKCommonLib the minimum version this plugin supports, so a proper message can be sent to the end-user if BKCommonLib is outdated. This avoids needless dependency-related issues.&lt;br /&gt;
&lt;br /&gt;
==Localization==&lt;br /&gt;
The localization() method is called before enabling and can be used to load Locale information to read/write from/to the Localization.yml. You can load single localization lines or an entire enumeration of them using the loadLocale and loadLocales methods. Examples:&lt;br /&gt;
&lt;br /&gt;
Loading localization lines one by one&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;@Override&lt;br /&gt;
public void localization() {&lt;br /&gt;
    loadLocale(&amp;quot;noperm&amp;quot;, ChatColor.RED + &amp;quot;You do not have permission!&amp;quot;);&lt;br /&gt;
    loadLocale(&amp;quot;nobuild&amp;quot;, ChatColor.RED + &amp;quot;You can not build here!&amp;quot;);&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
Loading localization lines from a class containing constants, or an enum&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;@Override&lt;br /&gt;
public void localization() {&lt;br /&gt;
    loadLocales(MyLocale.class);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class MyLocale extends LocalizationEnum {&lt;br /&gt;
    public static final MyLocale NOPERM = new MyLocale(&amp;quot;noperm&amp;quot;, ChatColor.RED + &amp;quot;You do not have permission!&amp;quot;);&lt;br /&gt;
    public static final MyLocale NOBUILD = new MyLocale(&amp;quot;nobuild&amp;quot;, ChatColor.RED + &amp;quot;You can not build in world %0%!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    private Localization(String name, String defValue) {&lt;br /&gt;
        super(name, defValue);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public String get(String... arguments) {&lt;br /&gt;
        return MyPlugin.getInstance().getLocale(this.getName(), arguments);&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
The benefit of using a Locale class like the above is that you do not have to use getLocale(name), allowing you to get localization messages a lot easier. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;MyLocale.NOPERM.message(player);&lt;br /&gt;
MyLocale.NOBUILD.message(player, player.getWorld().getName());&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Permission defaults==&lt;br /&gt;
It works exactly the same way localization works, but instead you override permissions() and use the loadPermission and loadPermissions methods. The equivalent enumeration class to use is called PermissionEnum. This enumeration automatically provides methods for permission checks, such as handle and has.&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
BKCommonLib automatically gives you the name version command to display the currently running plugin and BKCommonLib version. It also takes care of permission issues, by using and handling the NoPermissionException. If this is thrown for the console, a message is displayed that the command is not possible for use in the console.&lt;br /&gt;
&lt;br /&gt;
==Dependencies==&lt;br /&gt;
The updateDependency method is called whenever a new plugin enables, and after your plugin has enabled it calls it once for all currently enabled plugins. It allows you to keep track of dependencies, or to change some internal settings to provide support.&lt;br /&gt;
&lt;br /&gt;
==Metrics==&lt;br /&gt;
You can automatically use Metrics by adding the following in the plugin.yml:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;metrics: true&amp;lt;/pre&amp;gt;&lt;br /&gt;
By default this is disabled. To use Metrics, call the provided hasMetrics and getMetrics methods. There is no need to start the Metrics instance when enabling, PluginBase does that for you. For more information about Metrics, see this page.&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
* &#039;&#039;&#039;handle&#039;&#039;&#039; allows you to handle errors occurring in your plugin, which takes care of proper formatting and plugin disabling for critical errors&lt;br /&gt;
* &#039;&#039;&#039;log&#039;&#039;&#039; and &#039;&#039;&#039;logAction&#039;&#039;&#039; uses the plugin&#039;s logger to write messages, it&#039;s a simple shortcut&lt;br /&gt;
* &#039;&#039;&#039;register&#039;&#039;&#039; methods allow you to register Bukkit or packet listeners, and to register commands/commandhandlers&lt;br /&gt;
* &#039;&#039;&#039;getDataFile&#039;&#039;&#039; obtains a File object pointing to a file relative to the plugin &#039;workspace&#039; directory&lt;br /&gt;
* Properly disables other plugins depending on you before your plugin disables to avoid conflicts&lt;br /&gt;
* Handles enable, disable and command method errors automatically&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=BKCommonLib/ForDevelopers&amp;diff=2453</id>
		<title>BKCommonLib/ForDevelopers</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=BKCommonLib/ForDevelopers&amp;diff=2453"/>
		<updated>2023-09-25T23:57:12Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Update outdated links, add additional links to section BKCommonLib project structure&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[BKCommonLib|« Go back]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
This is a page where help is given for new and existing developers of BKCommonLib and everything related to it. If something needs to be redone or fixed, you can find information regarding it here.&lt;br /&gt;
&lt;br /&gt;
==BKCommonLib project structure==&lt;br /&gt;
BKCommonLib is a maven project - you need to support it to contribute to it. If you are using the Eclipse IDE, you can install [https://projects.eclipse.org/projects/technology.m2e m2eclipse] so you can properly import maven projects. To install this software, go to the marketplace in the Eclipse GUI and install it from there. See also: [https://marketplace.eclipse.org/marketplace-client-intro installation instructions].&lt;br /&gt;
&lt;br /&gt;
Upon first looking over all packages and classes it may seem overwhelming - and it is. BKCommonLib is extremely large, but it has a fixed structure.&lt;br /&gt;
&lt;br /&gt;
* Internal and server packages: try not to touch these, here is where all our CraftBukkit-specific logic resides&lt;br /&gt;
* Reflection: here is where we put all fields and methods contained within CraftBukkit so others can access it safely&lt;br /&gt;
* Proxies and Bases: here we store all base classes that can be extended or worked with. Includes math utility classes such as vectors&lt;br /&gt;
* [[BKCommonLib/Conversion|Conversion]]: here are all convertors meant for converting one datatype to the other&lt;br /&gt;
* Collections: here we store all special type of collections, such as those that convert one type to the other dynamically&lt;br /&gt;
* [[BKCommonLib/CommonEntity|Entity]] and [[BKCommonLib/Controller|Controller]]: all Entity-related utility classes which add new functionality, of which controllers&lt;br /&gt;
* [[BKCommonLib/EventsAndListeners|Events]]: Some events plugins can use, fired by BKCommonLib. See also: internal.&lt;br /&gt;
* [[BKCommonLib/Localization|Localization]] and [[BKCommonLib/PermissionDefaults|Permissions]]: speaks for itself, base classes for name given&lt;br /&gt;
* [[BKCommonLib/ConfigurationAPI|Config]] and [[BKCommonLib/NBTTagAPI|NBT]]: speaks for itself, helper classes for dealing with configuration/file data storage/NBT tags&lt;br /&gt;
* [[BKCommonLib/Scoreboards|Scoreboards]]: the Scoreboards API of BKCommonLib&lt;br /&gt;
* [[BKCommonLib/TabView|Tab]]: the Tab API of BKCommonLib&lt;br /&gt;
* Wrappers: for working with internal classes through a secure and non-reflection ridden layer&lt;br /&gt;
* [[BKCommonLib/General|Utils]]: All classes contain static utility methods that can be used for whatever purpose you seek&lt;br /&gt;
If you need to fix a bug or want to have a new feature, your first step is looking at which packages are or could be affected. Please don&#039;t make new packages for already covered things, it works confusing. If you plan on moving a class around, be sure to keep a (deprecated) redirecting proxy class behind so depending plugins don&#039;t stop working all of a sudden.&lt;br /&gt;
&lt;br /&gt;
==BKCommonLib build process==&lt;br /&gt;
When first starting to work with it, you may notice that there are no package versions in the net.minecraft.server and org.bukkit.craftbukkit imports. The resulting build, however, does. How come? Well, to skip the process of manually updating all versions, we do multiple things:&lt;br /&gt;
&lt;br /&gt;
* Use reflection where possible so we don&#039;t need these imports&lt;br /&gt;
* Use [https://github.com/bergerkiller/Spinot Spinot] instead of CraftBukkit/Spigot to build against&lt;br /&gt;
* Use the &#039;maven-shade-plugin&#039; to turn all imports to the proper versioned imports instead&lt;br /&gt;
In addition we have several other dependencies and respective repositories for per-plugin compatibility.&lt;br /&gt;
&lt;br /&gt;
==Jenkins build server and GitHub==&lt;br /&gt;
We use GitHub to host our projects and have our own CI build server to build the GitHub projects on. Here is a checklist to see whether the Jenkins build server is ready to go:&lt;br /&gt;
&lt;br /&gt;
* GitHub, Git server, Git client and other Git-related plugins are installed and set active (manage/manage plugins)&lt;br /&gt;
* JDK 6u38 and 7 are installed (manage/configure system)&lt;br /&gt;
* Git account information including a valid SSH key is set and hooks are set on manual (manage/configure system)&lt;br /&gt;
Per job (configuration):&lt;br /&gt;
&lt;br /&gt;
* GitHub project path is set and Sourcecode management is set on &#039;git&#039; and configured fully&lt;br /&gt;
* Repository URL and GitHub project path is the same (&amp;lt;nowiki&amp;gt;http://github.com/etc/etc&amp;lt;/nowiki&amp;gt;)&lt;br /&gt;
* &#039;Build when changes are sent&#039; checked, nothing else by default&lt;br /&gt;
* JDK 6 or 7 is selected properly for building the project (usually 6)&lt;br /&gt;
* Github plugin hook url (&amp;lt;nowiki&amp;gt;http://sitename.something/github-webhook/&amp;lt;/nowiki&amp;gt;) is added to service hooks on the GitHub project&lt;br /&gt;
* Post-build step &#039;archive artifacts&#039; is set (output: target/*.jar)&lt;br /&gt;
* Multiple branches? Be sure to specify &#039;origin/master&#039; if needed!&lt;br /&gt;
Common errors and issues:&lt;br /&gt;
&lt;br /&gt;
* Dependency issues on the server and not locally: delete the .m2/repository/* contents locally and refresh&lt;br /&gt;
* Compilation failure: change between different compiler versions until it works&lt;br /&gt;
* This is not what I wanted to build!: make sure it isn&#039;t building the wrong branch&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
	<entry>
		<id>https://wiki.traincarts.net/index.php?title=BKCommonLib/CommonEntity&amp;diff=2452</id>
		<title>BKCommonLib/CommonEntity</title>
		<link rel="alternate" type="text/html" href="https://wiki.traincarts.net/index.php?title=BKCommonLib/CommonEntity&amp;diff=2452"/>
		<updated>2023-09-25T23:41:16Z</updated>

		<summary type="html">&lt;p&gt;Bbayu: Changed external links to current wiki into wikilinks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[BKCommonLib|« Go back]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The CommonEntity class provides additional advanced entity utilities Bukkit does not provide. Most evidently, these are:&lt;br /&gt;
&lt;br /&gt;
Utilities to alter entity position, velocity&lt;br /&gt;
Perform cross-world teleportation of all entity types&lt;br /&gt;
Added properties (isInWater, isMoving, etc.)&lt;br /&gt;
Entity controllers&lt;br /&gt;
Entity network controllers&lt;br /&gt;
In addition, it contains several &#039;specialized&#039; CommonEntity extensions. For example, minecarts, players and items have an additional class to handle the entity-specific methods. More CommonEntity extensions are added as the project goes on, but it partially depends on what Bukkit is unable to provide by default.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
The basic usage of CommonEntity instances is as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Creating a new entity and spawning it afterwards&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;CommonEntity&amp;lt;?&amp;gt; entity = CommonEntity.create(EntityType.CREEPER);&lt;br /&gt;
// Some pre-spawn conditions, and what not&lt;br /&gt;
entity.spawn(location);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Obtaining a (new) CommonEntity from an existing Entity&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;CommonEntity&amp;lt;?&amp;gt; entity = CommonEntity.get(entity);&lt;br /&gt;
CommonPlayer player = CommonEntity.get(playerEntity);&lt;br /&gt;
CommonItem item = CommonEntity.get(itemEntity);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Entity Controllers==&lt;br /&gt;
CommonEntity is the hub for Entity Controllers. For more information, see [[BKCommonLib/Controller|this page]].&lt;br /&gt;
&lt;br /&gt;
==Entity Network Controllers==&lt;br /&gt;
For spawned CommonEntities, network controllers can be assigned as well. For more information, see [[BKCommonLib/NetworkController|this page]].&lt;/div&gt;</summary>
		<author><name>Bbayu</name></author>
	</entry>
</feed>