[
	{
		"baseType": {
			"categories": [
				"essential",
				"transport"
			],
			"colliders": [
				{"min":[-0.758,-0.5,-0.5],"max":[0.739,0.239,0.5], "impactsPhysics": false},
				{"min":[-3.741,1.721,-0.5],"max":[-0.475,2.155,0.5],"impactsBlockPlacement":true, "impactsPhysics": false},
				{"min":[-0.383,2.212,-4.472],"max":[1.114,2.617,4.322],"impactsBlockPlacement":true, "impactsPhysics": false}
			],
			"icon": "../textures/icons/glider.png",
			"isSolid": false,
			"lightingTransparency": 200,
			"mesh": "../meshes/gliderlauncher.ply",
			"meshRotationEuler": {
				"x": 0,
				"y": 90,
				"z": 0
			},
			"needsBase": true,
			"onPlaceAudio": "woodPlace",
			"onRemoveAudio": "woodDeleteLight",
			"sideall": "neutral"
		},
		"generateType": "rotateBlock",
		"rotatedTypeJSON": [
			{
				"attachBehaviour": [
					"client_reservesecondaryhiton",
					{
						"direction": {
							"x": 1,
							"y": 0.1,
							"z": 0
						},
						"id": "gliderlauncher",
						"offset": {
							"x": 0,
							"y": 1,
							"z": 0
						},
						"vehicleType": "main_glider",
						"velocity": {
							"x": 20,
							"y": 3,
							"z": 0
						}
					}
				]
			},
			{
				"attachBehaviour": [
					"client_reservesecondaryhiton",
					{
						"direction": {
							"x": -1,
							"y": 0.1,
							"z": 0
						},
						"id": "gliderlauncher",
						"offset": {
							"x": 0,
							"y": 1,
							"z": 0
						},
						"vehicleType": "main_glider",
						"velocity": {
							"x": -20,
							"y": 3,
							"z": 0
						}
					}
				]
			},
			{
				"attachBehaviour": [
					"client_reservesecondaryhiton",
					{
						"direction": {
							"x": 0,
							"y": 0.1,
							"z": 1
						},
						"id": "gliderlauncher",
						"offset": {
							"x": 0,
							"y": 1,
							"z": 0
						},
						"vehicleType": "main_glider",
						"velocity": {
							"x": 0,
							"y": 3,
							"z": 20
						}
					}
				]
			},
			{
				"attachBehaviour": [
					"client_reservesecondaryhiton",
					{
						"direction": {
							"x": 0,
							"y": 0.1,
							"z": -1
						},
						"id": "gliderlauncher",
						"offset": {
							"x": 0,
							"y": 1,
							"z": 0
						},
						"vehicleType": "main_glider",
						"velocity": {
							"x": 0,
							"y": 3,
							"z": -20
						}
					}
				]
			}
		],
		"typeName": "glider"
	},
	{
		"baseType": {
			"categories": [
				"essential",
				"transport"
			],
			"colliders": [
				{"min":[-0.5,-0.5,-0.544],"max":[0.655,0.313,0.532], "impactsPhysics": false},
				{"min":[-4.219,-0.5,-0.5],"max":[-3.356,0.273,0.5],"impactsBlockPlacement":true, "impactsPhysics": false},
				{"min":[-3.385,0.33,-0.5],"max":[-2.509,0.844,0.5],"impactsBlockPlacement":true, "impactsPhysics": false},
				{"min":[-1.622,1.543,-4.558],"max":[-0.63,2.547,4.59],"impactsBlockPlacement":true, "impactsPhysics": false},
				{"min":[-2.542,0.91,-0.5],"max":[-1.66,1.623,0.5],"impactsBlockPlacement":true, "impactsPhysics": false},
				{"min":[-0.673,2.649,-3.484],"max":[-0.143,2.947,3.482],"impactsBlockPlacement":true, "impactsPhysics": false}
			],
			"icon": "../textures/icons/glidersteel.png",
			"isSolid": false,
			"lightingTransparency": 200,
			"mesh": "../meshes/glidersteellauncher.ply",
			"needsBase": true,
			"onPlaceAudio": "woodPlace",
			"onRemoveAudio": "woodDeleteLight",
			"sideall": "neutral"
		},
		"generateType": "rotateBlock",
		"rotatedTypeJSON": [
			{
				"attachBehaviour": [
					"client_reservesecondaryhiton",
					{
						"direction": {
							"x": 0.6,
							"y": 0.6,
							"z": 0
						},
						"id": "gliderlauncher",
						"offset": {
							"x": 0,
							"y": 1,
							"z": 0
						},
						"vehicleType": "steel_glider",
						"velocity": {
							"x": 35,
							"y": 35,
							"z": 0
						}
					}
				]
			},
			{
				"attachBehaviour": [
					"client_reservesecondaryhiton",
					{
						"direction": {
							"x": -0.6,
							"y": 0.6,
							"z": 0
						},
						"id": "gliderlauncher",
						"offset": {
							"x": 0,
							"y": 1,
							"z": 0
						},
						"vehicleType": "steel_glider",
						"velocity": {
							"x": -35,
							"y": 35,
							"z": 0
						}
					}
				]
			},
			{
				"attachBehaviour": [
					"client_reservesecondaryhiton",
					{
						"direction": {
							"x": 0,
							"y": 0.6,
							"z": 0.6
						},
						"id": "gliderlauncher",
						"offset": {
							"x": 0,
							"y": 1,
							"z": 0
						},
						"vehicleType": "steel_glider",
						"velocity": {
							"x": 0,
							"y": 35,
							"z": 35
						}
					}
				]
			},
			{
				"attachBehaviour": [
					"client_reservesecondaryhiton",
					{
						"direction": {
							"x": 0,
							"y": 0.6,
							"z": -0.6
						},
						"id": "gliderlauncher",
						"offset": {
							"x": 0,
							"y": 1,
							"z": 0
						},
						"vehicleType": "steel_glider",
						"velocity": {
							"x": 0,
							"y": 35,
							"z": -35
						}
					}
				]
			}
		],
		"typeName": "glidersteel"
	},
	{
		"baseType": {
			"canBuildUpon": true,
			"categories": [
				"essential",
				"transport"
			],
			"colliders": [
				{"min":[-0.305,-0.5,-0.401],"max":[0.494,-0.48,0.401]},
				{"min":[-0.303,1.449,-0.405],"max":[0.501,1.487,0.403],"impactsBlockPlacement":true},
				{"min":[-0.312,1.05,-0.2],"max":[-0.2,1.45,0.2],"impactsBlockPlacement":true},
				{"min":[-0.312,-0.45,-0.2],"max":[-0.2,1.05,0.2],"impactsBlockPlacement":true},
				{"min":[-0.5,-0.5,-0.5],"max":[-0.444,0.5,0.5]},
				{"min":[-0.5,-0.5,0.433],"max":[0.5,0.5,0.5]},
				{"min":[-0.5,-0.5,-0.5],"max":[0.5,0.5,-0.433]}
			],
			"icon": "../textures/icons/elevatorgateway.png",
			"isSolid": false,
			"lightingTransparency": 200,
			"mesh": "../meshes/elevatorgateway.ply",
			"meshRotationEuler": {
				"x": 0,
				"y": 180,
				"z": 0
			},
			"onPlaceAudio": "woodPlace",
			"onRemoveAudio": "woodDeleteLight",
			"pathingImpact": "AsUntouchableSolid",
			"sideall": "neutral"
		},
		"generateType": "rotateBlock",
		"rotatedTypeJSON": [
			{
				"attachBehaviour": [
					/* gatewayFilter is the group of other gateway types that it'll connect to*/
					/* shaftFilter is the group of shaft types that it'll connect via to the gateways*/
					/* client_reservesecondaryhiton prevents the client from placing blocks on it by right-clicking it, so we can cleanly intercept it on the server in OnPlayerClicked as "reserved"*/
					{
						"gatewayFilter": "mainGatewaysX+",
						"id": "elevator",
						"meshRotation": [
							0,
							0,
							0
						],
						"shaftFilter": "mainShaftX+",
						"triggers": [
							{
								"colliderIndex": 2,
								"type": "DirectionUp"
							},
							{
								"colliderIndex": 3,
								"type": "DirectionDown"
							}
						],
						"type": "gateway",
						"vehicleSettingsID": "vertical_elevator"
					},
					"client_reservesecondaryhiton"
				]
			},
			{
				"attachBehaviour": [
					{
						"gatewayFilter": "mainGatewaysX-",
						"id": "elevator",
						"meshRotation": [
							0,
							180,
							0
						],
						"shaftFilter": "mainShaftX-",
						"triggers": [
							{
								"colliderIndex": 2,
								"type": "DirectionUp"
							},
							{
								"colliderIndex": 3,
								"type": "DirectionDown"
							}
						],
						"type": "gateway",
						"vehicleSettingsID": "vertical_elevator"
					},
					"client_reservesecondaryhiton"
				]
			},
			{
				"attachBehaviour": [
					{
						"gatewayFilter": "mainGatewaysZ+",
						"id": "elevator",
						"meshRotation": [
							0,
							270,
							0
						],
						"shaftFilter": "mainShaftZ+",
						"triggers": [
							{
								"colliderIndex": 2,
								"type": "DirectionUp"
							},
							{
								"colliderIndex": 3,
								"type": "DirectionDown"
							}
						],
						"type": "gateway",
						"vehicleSettingsID": "vertical_elevator"
					},
					"client_reservesecondaryhiton"
				]
			},
			{
				"attachBehaviour": [
					{
						"gatewayFilter": "mainGatewaysZ-",
						"id": "elevator",
						"meshRotation": [
							0,
							90,
							0
						],
						"shaftFilter": "mainShaftZ-",
						"triggers": [
							{
								"colliderIndex": 2,
								"type": "DirectionUp"
							},
							{
								"colliderIndex": 3,
								"type": "DirectionDown"
							}
						],
						"type": "gateway",
						"vehicleSettingsID": "vertical_elevator"
					},
					"client_reservesecondaryhiton"
				]
			}
		],
		"typeName": "elevator"
	},
	{
		"baseType": {
			"attachBehaviour": [
				{
					"id": "builder_usable",
					"mirrorResult": true
				}
			],
			"canBuildUpon": true,
			"categories": [
				"essential",
				"transport"
			],
			"colliders": [
				{
					"impactsBlockPlacement":true,
					"max": [
						-0.4,
						0.5,
						0.5
					],
					"min": [
						-0.5,
						-0.5,
						-0.5
					]
				},
				{
					"impactsBlockPlacement":true,
					"max": [
						0.5,
						0.5,
						0.5
					],
					"min": [
						-0.5,
						-0.5,
						0.4
					]
				},
				{
					"impactsBlockPlacement":true,
					"max": [
						0.5,
						0.5,
						-0.4
					],
					"min": [
						-0.5,
						-0.5,
						-0.5
					]
				}
			],
			"icon": "../textures/icons/elevatorshaft.png",
			"isSolid": false,
			"lightingTransparency": 200,
			"mesh": "../meshes/elevatorshaft.ply",
			"onPlaceAudio": "woodPlace",
			"onRemoveAudio": "woodDeleteLight",
			"pathingImpact": "AsUntouchableSolid",
			"sideall": "neutral"
		},
		"generateType": "rotateBlock",
		"rotatedTypeJSON": [
			{
				"attachBehaviour": [
					{
						"id": "elevator",
						"shaftFilter": "mainShaftX+",
						"type": "shaft"
					}
				]
			},
			{
				"attachBehaviour": [
					{
						"id": "elevator",
						"shaftFilter": "mainShaftX-",
						"type": "shaft"
					}
				]
			},
			{
				"attachBehaviour": [
					{
						"id": "elevator",
						"shaftFilter": "mainShaftZ+",
						"type": "shaft"
					}
				]
			},
			{
				"attachBehaviour": [
					{
						"id": "elevator",
						"shaftFilter": "mainShaftZ-",
						"type": "shaft"
					}
				]
			}
		],
		"typeName": "elevatorshaft"
	}
]