mirror of
				https://github.com/SquidDev-CC/CC-Tweaked
				synced 2025-11-04 07:32:59 +00:00 
			
		
		
		
	Compare commits
	
		
			447 Commits
		
	
	
		
			v1.15.2-1.
			...
			v1.97.2
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					ed9e823f3f | ||
| 
						 | 
					2b8fea5b35 | ||
| 
						 | 
					b3e6b4c29a | ||
| 
						 | 
					c94ff68e7f | ||
| 
						 | 
					3fb96a3438 | ||
| 
						 | 
					7a2b7c0701 | ||
| 
						 | 
					fa7a731ad1 | ||
| 
						 | 
					8be48ebcf0 | ||
| 
						 | 
					123f3abcaa | ||
| 
						 | 
					9f2e43f00a | ||
| 
						 | 
					9fb35b2799 | ||
| 
						 | 
					272572dbf2 | ||
| 
						 | 
					702e4fc787 | ||
| 
						 | 
					511327effe | ||
| 
						 | 
					940e35caea | ||
| 
						 | 
					fca01693dd | ||
| 
						 | 
					8846a3f36f | ||
| 
						 | 
					8002c9e932 | ||
| 
						 | 
					6fd8331e94 | ||
| 
						 | 
					7a667b9028 | ||
| 
						 | 
					67b7cd7a14 | ||
| 
						 | 
					960d79803d | ||
| 
						 | 
					43ef36fa15 | ||
| 
						 | 
					f037d9539e | ||
| 
						 | 
					a3b2f7b5bd | ||
| 
						 | 
					0859145d18 | ||
| 
						 | 
					f6e4122f7f | ||
| 
						 | 
					8e4023fdbc | ||
| 
						 | 
					f10818ec6b | ||
| 
						 | 
					bc2358489b | ||
| 
						 | 
					6e5e682e3a | ||
| 
						 | 
					02c63ce7e8 | ||
| 
						 | 
					fd24d89f89 | ||
| 
						 | 
					685d33a2dd | ||
| 
						 | 
					ca40c9cf19 | ||
| 
						 | 
					8985ea9560 | ||
| 
						 | 
					1832028dfd | ||
| 
						 | 
					316889dab7 | ||
| 
						 | 
					96c80a6549 | ||
| 
						 | 
					fb274e2ed6 | ||
| 
						 | 
					ebe847c04b | ||
| 
						 | 
					fdbf41b3c4 | ||
| 
						 | 
					9dcb9f9537 | ||
| 
						 | 
					1395c877af | ||
| 
						 | 
					969451f18c | ||
| 
						 | 
					259c8d57f5 | ||
| 
						 | 
					2ee07283fa | ||
| 
						 | 
					c85a80617a | ||
| 
						 | 
					5aa8611e43 | ||
| 
						 | 
					86aecd945e | ||
| 
						 | 
					a7a9f4fa13 | ||
| 
						 | 
					22e4c0603b | ||
| 
						 | 
					f3b731460e | ||
| 
						 | 
					d787c6e6c1 | ||
| 
						 | 
					11272b8d00 | ||
| 
						 | 
					1c254e3bb0 | ||
| 
						 | 
					7ade380fad | ||
| 
						 | 
					2a377a37ee | ||
| 
						 | 
					861a9e199d | ||
| 
						 | 
					d4f1e34023 | ||
| 
						 | 
					6d25278a5c | ||
| 
						 | 
					abfb05f04c | ||
| 
						 | 
					9d8e76c5b4 | ||
| 
						 | 
					89662bf54a | ||
| 
						 | 
					520635dfec | ||
| 
						 | 
					ee82a8d75f | ||
| 
						 | 
					967f00cd1b | ||
| 
						 | 
					dda5236d84 | ||
| 
						 | 
					427ca2f108 | ||
| 
						 | 
					e30f2a86f0 | ||
| 
						 | 
					121ef6e976 | ||
| 
						 | 
					e4271ff6f7 | ||
| 
						 | 
					8d3b94734d | ||
| 
						 | 
					9e57150384 | ||
| 
						 | 
					0dc34a7dbe | ||
| 
						 | 
					fbe28dc51a | ||
| 
						 | 
					14e013d075 | ||
| 
						 | 
					9bc4e9530c | ||
| 
						 | 
					cbff505297 | ||
| 
						 | 
					c4aef2d4c7 | ||
| 
						 | 
					2ed6692f76 | ||
| 
						 | 
					f075eabc32 | ||
| 
						 | 
					3d1c9d1667 | ||
| 
						 | 
					0028ad8f54 | ||
| 
						 | 
					4c805f1c27 | ||
| 
						 | 
					505543ad94 | ||
| 
						 | 
					644471c6bf | ||
| 
						 | 
					bf87d7faa1 | ||
| 
						 | 
					be95b65488 | ||
| 
						 | 
					7e9f3bd61a | ||
| 
						 | 
					4a74aa8166 | ||
| 
						 | 
					b4ce4361ce | ||
| 
						 | 
					42a3dd24ad | ||
| 
						 | 
					9129da2e3d | ||
| 
						 | 
					668cdcdd39 | ||
| 
						 | 
					2543ebee10 | ||
| 
						 | 
					104a317163 | ||
| 
						 | 
					921802e6c9 | ||
| 
						 | 
					56cfc1a452 | ||
| 
						 | 
					a14b98be22 | ||
| 
						 | 
					76b5c05acc | ||
| 
						 | 
					8b3f1a448f | ||
| 
						 | 
					3de515c617 | ||
| 
						 | 
					ab199cd9b0 | ||
| 
						 | 
					fc4bc9aa05 | ||
| 
						 | 
					9662a106f0 | ||
| 
						 | 
					06b0538b76 | ||
| 
						 | 
					fb128152a5 | ||
| 
						 | 
					f596af059d | ||
| 
						 | 
					52bb06d250 | ||
| 
						 | 
					f3d22444d3 | ||
| 
						 | 
					84a1f63445 | ||
| 
						 | 
					dbe98ac270 | ||
| 
						 | 
					a00775dcbb | ||
| 
						 | 
					2279f5044d | ||
| 
						 | 
					e8d90b94ec | ||
| 
						 | 
					0bf7f3de89 | ||
| 
						 | 
					59266fe6e9 | ||
| 
						 | 
					a198a5241d | ||
| 
						 | 
					b429095f88 | ||
| 
						 | 
					a6c7236fa0 | ||
| 
						 | 
					69deb0c947 | ||
| 
						 | 
					b0d7f690eb | ||
| 
						 | 
					62f93f1b4b | ||
| 
						 | 
					7fe322a93a | ||
| 
						 | 
					de97fa35a8 | ||
| 
						 | 
					25ce9b9bea | ||
| 
						 | 
					59048b3f30 | ||
| 
						 | 
					a960db7ced | ||
| 
						 | 
					6a4f09e7b1 | ||
| 
						 | 
					19d1cc0320 | ||
| 
						 | 
					1a52275dcb | ||
| 
						 | 
					2fc2cf2e29 | ||
| 
						 | 
					80c2fc68aa | ||
| 
						 | 
					7c0664b9f2 | ||
| 
						 | 
					4d1a950fbf | ||
| 
						 | 
					135a3f56a5 | ||
| 
						 | 
					1f117b7c47 | ||
| 
						 | 
					c820e051b3 | ||
| 
						 | 
					01d7aaf062 | ||
| 
						 | 
					1e75e4ff6e | ||
| 
						 | 
					f967a70121 | ||
| 
						 | 
					ac5150a664 | ||
| 
						 | 
					0318e62524 | ||
| 
						 | 
					ca69d755e6 | ||
| 
						 | 
					3ba7acc414 | ||
| 
						 | 
					4c27eea73b | ||
| 
						 | 
					225a64dd6b | ||
| 
						 | 
					1831e81dd4 | ||
| 
						 | 
					a4dd6c24e5 | ||
| 
						 | 
					936742895b | ||
| 
						 | 
					b5d1e618b9 | ||
| 
						 | 
					10aa6c5297 | ||
| 
						 | 
					010ebacd1a | ||
| 
						 | 
					9e002beed7 | ||
| 
						 | 
					6029defb20 | ||
| 
						 | 
					c16aa5f247 | ||
| 
						 | 
					8d27bdca7b | ||
| 
						 | 
					41aa8fa163 | ||
| 
						 | 
					e40fb67b50 | ||
| 
						 | 
					96d46ffd2c | ||
| 
						 | 
					652b7ebba6 | ||
| 
						 | 
					f0d7a1165d | ||
| 
						 | 
					4a20eea852 | ||
| 
						 | 
					ccdd2bf477 | ||
| 
						 | 
					8d8f41a50b | ||
| 
						 | 
					72c78db28b | ||
| 
						 | 
					bf8a992273 | ||
| 
						 | 
					9c214fcd8a | ||
| 
						 | 
					082cc9d2d8 | ||
| 
						 | 
					bff2e81713 | ||
| 
						 | 
					63aa3d8877 | ||
| 
						 | 
					74c5d7e719 | ||
| 
						 | 
					78a685c2cb | ||
| 
						 | 
					a475f55b9c | ||
| 
						 | 
					9353ded2d5 | ||
| 
						 | 
					d197268e53 | ||
| 
						 | 
					9648265056 | ||
| 
						 | 
					264dbc570f | ||
| 
						 | 
					e4ad8bc117 | ||
| 
						 | 
					1b31972092 | ||
| 
						 | 
					6cd9fa9fb2 | ||
| 
						 | 
					d10f297ca0 | ||
| 
						 | 
					9ae5636d41 | ||
| 
						 | 
					a60daf78cf | ||
| 
						 | 
					76e0507c3b | ||
| 
						 | 
					d8e2fab2b1 | ||
| 
						 | 
					5c5e510075 | ||
| 
						 | 
					5a309258af | ||
| 
						 | 
					b0782ec38b | ||
| 
						 | 
					46846a4fde | ||
| 
						 | 
					d955443b21 | ||
| 
						 | 
					57e6c49844 | ||
| 
						 | 
					66dbab7a6b | ||
| 
						 | 
					558976e4ca | ||
| 
						 | 
					3a7470a108 | ||
| 
						 | 
					cf2b332c3c | ||
| 
						 | 
					8984ebcf80 | ||
| 
						 | 
					a28e7e2db3 | ||
| 
						 | 
					3860e2466c | ||
| 
						 | 
					5b31c2536a | ||
| 
						 | 
					98dc7a6e58 | ||
| 
						 | 
					5e0ceda7ce | ||
| 
						 | 
					7fe3ac9222 | ||
| 
						 | 
					a65b8ed04c | ||
| 
						 | 
					3e14b84c23 | ||
| 
						 | 
					1710ad9861 | ||
| 
						 | 
					9c48c99be7 | ||
| 
						 | 
					d10d1b45fe | ||
| 
						 | 
					70a1cf5c5a | ||
| 
						 | 
					b546a10bd6 | ||
| 
						 | 
					2f35bbb538 | ||
| 
						 | 
					891dde43a9 | ||
| 
						 | 
					094e0d4f33 | ||
| 
						 | 
					df40adce20 | ||
| 
						 | 
					e12ce95b2d | ||
| 
						 | 
					bcc0effd00 | ||
| 
						 | 
					64f3aa2dba | ||
| 
						 | 
					515ccfebd3 | ||
| 
						 | 
					0b6dbe7778 | ||
| 
						 | 
					19054684c6 | ||
| 
						 | 
					a72a5e6deb | ||
| 
						 | 
					eb2d9482a2 | ||
| 
						 | 
					95794fdaf3 | ||
| 
						 | 
					af477a401a | ||
| 
						 | 
					27531c161d | ||
| 
						 | 
					a8f208c394 | ||
| 
						 | 
					148d9e9dda | ||
| 
						 | 
					67fc21271b | ||
| 
						 | 
					ce28e2659a | ||
| 
						 | 
					47e4826f2b | ||
| 
						 | 
					9bde2d8d13 | ||
| 
						 | 
					46acb6866e | ||
| 
						 | 
					c0506108f9 | ||
| 
						 | 
					0dd7c3695f | ||
| 
						 | 
					2a290be248 | ||
| 
						 | 
					c4a6c16330 | ||
| 
						 | 
					f8b3b544d1 | ||
| 
						 | 
					53ae689468 | ||
| 
						 | 
					73e460e533 | ||
| 
						 | 
					a4e68d637a | ||
| 
						 | 
					1f1b20c81e | ||
| 
						 | 
					20a9ff7a3f | ||
| 
						 | 
					58cd5e3df7 | ||
| 
						 | 
					5922d7548c | ||
| 
						 | 
					386e01364e | ||
| 
						 | 
					70eff6aa63 | ||
| 
						 | 
					45ac601946 | ||
| 
						 | 
					d6c5a5bd27 | ||
| 
						 | 
					02c7903cb7 | ||
| 
						 | 
					37e856efdc | ||
| 
						 | 
					8a38097887 | ||
| 
						 | 
					884b417ec2 | ||
| 
						 | 
					1d1d6227eb | ||
| 
						 | 
					d5eb82db60 | ||
| 
						 | 
					3575654d02 | ||
| 
						 | 
					79fcc7241b | ||
| 
						 | 
					b203d3aa0a | ||
| 
						 | 
					f1176af9d1 | ||
| 
						 | 
					717686d855 | ||
| 
						 | 
					92811ca0bc | ||
| 
						 | 
					f8a58dbcb1 | ||
| 
						 | 
					98aabe2cfb | ||
| 
						 | 
					f938ed9779 | ||
| 
						 | 
					03c9274b27 | ||
| 
						 | 
					92c94ac039 | ||
| 
						 | 
					5c6fd80b0c | ||
| 
						 | 
					f1ec59df15 | ||
| 
						 | 
					624b23c7ac | ||
| 
						 | 
					9b77a4aaee | ||
| 
						 | 
					d8b0037cfa | ||
| 
						 | 
					91a9e7fdf7 | ||
| 
						 | 
					2c3573719b | ||
| 
						 | 
					46bc42d5a7 | ||
| 
						 | 
					1b9e93a80f | ||
| 
						 | 
					7b93f91ffa | ||
| 
						 | 
					31a1027401 | ||
| 
						 | 
					e0fc994819 | ||
| 
						 | 
					43408bf085 | ||
| 
						 | 
					d28f42e8b7 | ||
| 
						 | 
					ac452582c1 | ||
| 
						 | 
					7e65c6b25c | ||
| 
						 | 
					457a863842 | ||
| 
						 | 
					eef36e1358 | ||
| 
						 | 
					feda08b915 | ||
| 
						 | 
					0240ce50ce | ||
| 
						 | 
					592b83e784 | ||
| 
						 | 
					5d91491ec7 | ||
| 
						 | 
					7326d1110d | ||
| 
						 | 
					0aa6ac05a0 | ||
| 
						 | 
					27a2c063b9 | ||
| 
						 | 
					89a195ec06 | ||
| 
						 | 
					0e5fd4e8e0 | ||
| 
						 | 
					aa4ec53bb6 | ||
| 
						 | 
					6b49327462 | ||
| 
						 | 
					74ad934889 | ||
| 
						 | 
					08b3dbbad5 | ||
| 
						 | 
					54eac0a2f8 | ||
| 
						 | 
					51ca5e620c | ||
| 
						 | 
					076d572831 | ||
| 
						 | 
					75f2b91fef | ||
| 
						 | 
					79534e5630 | ||
| 
						 | 
					d483a91459 | ||
| 
						 | 
					71d764f122 | ||
| 
						 | 
					2e527eb11e | ||
| 
						 | 
					19273b3696 | ||
| 
						 | 
					4643641d51 | ||
| 
						 | 
					63cd9c5bc7 | ||
| 
						 | 
					e9c11ff325 | ||
| 
						 | 
					452464aa01 | ||
| 
						 | 
					8885462175 | ||
| 
						 | 
					b8bd64913b | ||
| 
						 | 
					00b458c39a | ||
| 
						 | 
					88722d484f | ||
| 
						 | 
					6d103e2114 | ||
| 
						 | 
					42f23d56ae | ||
| 
						 | 
					89d5211bd7 | ||
| 
						 | 
					83e70377f7 | ||
| 
						 | 
					f6a26f75c3 | ||
| 
						 | 
					664df62d5d | ||
| 
						 | 
					1348ee0588 | ||
| 
						 | 
					145dce7653 | ||
| 
						 | 
					7f2651c23e | ||
| 
						 | 
					05464107a8 | ||
| 
						 | 
					86705787f0 | ||
| 
						 | 
					b34d8387d9 | ||
| 
						 | 
					4d00969ef0 | ||
| 
						 | 
					01d3d12992 | ||
| 
						 | 
					5e31dcde83 | ||
| 
						 | 
					5184883af1 | ||
| 
						 | 
					0c45112262 | ||
| 
						 | 
					0bf1672f45 | ||
| 
						 | 
					e1b8ac1f84 | ||
| 
						 | 
					deea552d99 | ||
| 
						 | 
					54229c2ce1 | ||
| 
						 | 
					1346a26179 | ||
| 
						 | 
					14df44f09d | ||
| 
						 | 
					1a21529499 | ||
| 
						 | 
					2546990f41 | ||
| 
						 | 
					b39ca02464 | ||
| 
						 | 
					628618105c | ||
| 
						 | 
					075ba03f5d | ||
| 
						 | 
					10bf84b631 | ||
| 
						 | 
					c346e22a45 | ||
| 
						 | 
					418e1335b1 | ||
| 
						 | 
					d52372df31 | ||
| 
						 | 
					cc72e1c2bd | ||
| 
						 | 
					d28afcc6a9 | ||
| 
						 | 
					220ed21e6e | ||
| 
						 | 
					09d465774d | ||
| 
						 | 
					dfc8f48f12 | ||
| 
						 | 
					abe2ec4686 | ||
| 
						 | 
					5333cda44e | ||
| 
						 | 
					dc88fbeb12 | ||
| 
						 | 
					c5eb7a9501 | ||
| 
						 | 
					bc969db2be | ||
| 
						 | 
					50b7646178 | ||
| 
						 | 
					3fa6b5bc9d | ||
| 
						 | 
					33e65e39e3 | ||
| 
						 | 
					0380e60590 | ||
| 
						 | 
					2918892ee2 | ||
| 
						 | 
					e43dd9f7c6 | ||
| 
						 | 
					244fd95034 | ||
| 
						 | 
					14e98e2fcb | ||
| 
						 | 
					dcf5d59109 | ||
| 
						 | 
					b95083c77e | ||
| 
						 | 
					c54c8c3ea6 | ||
| 
						 | 
					f79c67e243 | ||
| 
						 | 
					6ec7ebe439 | ||
| 
						 | 
					76fe33760d | ||
| 
						 | 
					cb549d8f43 | ||
| 
						 | 
					7b400fdcdd | ||
| 
						 | 
					ab70d918b5 | ||
| 
						 | 
					c64644b9ec | ||
| 
						 | 
					afb12eb342 | ||
| 
						 | 
					64f5ca02b3 | ||
| 
						 | 
					84bca21b0c | ||
| 
						 | 
					b6757c416f | ||
| 
						 | 
					dc9d3f2d15 | ||
| 
						 | 
					807825d74e | ||
| 
						 | 
					14c17676c6 | ||
| 
						 | 
					324519575c | ||
| 
						 | 
					fbcf26bdc9 | ||
| 
						 | 
					30ab6bd045 | ||
| 
						 | 
					2ea816b78b | ||
| 
						 | 
					56dcc57755 | ||
| 
						 | 
					a4830aff86 | ||
| 
						 | 
					621bc526be | ||
| 
						 | 
					605e1f6b9b | ||
| 
						 | 
					cb66ef7e30 | ||
| 
						 | 
					fd2f6a38c1 | ||
| 
						 | 
					229821d398 | ||
| 
						 | 
					1f2e0c444d | ||
| 
						 | 
					429baa350c | ||
| 
						 | 
					7fe62485fa | ||
| 
						 | 
					fe10c68099 | ||
| 
						 | 
					06092cfddd | ||
| 
						 | 
					9967dc5740 | ||
| 
						 | 
					b920e04c59 | ||
| 
						 | 
					baa1b5a5c9 | ||
| 
						 | 
					e84663a5c5 | ||
| 
						 | 
					1c46220c42 | ||
| 
						 | 
					889b445855 | ||
| 
						 | 
					19553a981e | ||
| 
						 | 
					15f4dbd061 | ||
| 
						 | 
					98e12c7c3e | ||
| 
						 | 
					dfad319864 | ||
| 
						 | 
					111b58f533 | ||
| 
						 | 
					9345652808 | ||
| 
						 | 
					d40163b409 | ||
| 
						 | 
					96400966d7 | ||
| 
						 | 
					db83bd4f64 | ||
| 
						 | 
					579a38d366 | ||
| 
						 | 
					0e6797c7da | ||
| 
						 | 
					c935577768 | ||
| 
						 | 
					c2b4077aa1 | ||
| 
						 | 
					ac020859f3 | ||
| 
						 | 
					238be8955b | ||
| 
						 | 
					f997b02b8f | ||
| 
						 | 
					799bb77847 | ||
| 
						 | 
					2f66792a0d | ||
| 
						 | 
					6cae8e211e | ||
| 
						 | 
					48b1b2f01d | ||
| 
						 | 
					8c45fd362a | ||
| 
						 | 
					07b13dd2b4 | ||
| 
						 | 
					45e84e1ede | ||
| 
						 | 
					725dfa764f | ||
| 
						 | 
					c221502ec9 | ||
| 
						 | 
					234f18c228 | ||
| 
						 | 
					006ad109cb | ||
| 
						 | 
					0db080154c | ||
| 
						 | 
					200311033f | ||
| 
						 | 
					3192dc81ac | ||
| 
						 | 
					b11d4bb209 | ||
| 
						 | 
					2a716244e9 | ||
| 
						 | 
					19b7ed538a | ||
| 
						 | 
					b0d9dc0b88 | ||
| 
						 | 
					e6094a59fa | ||
| 
						 | 
					e8d7e6a562 | ||
| 
						 | 
					536c2d9b2d | ||
| 
						 | 
					f15a278f3b | ||
| 
						 | 
					26b73c2ff3 | ||
| 
						 | 
					c1e08fc3c7 | ||
| 
						 | 
					b9ec6f236d | ||
| 
						 | 
					b1fff97bff | ||
| 
						 | 
					c81bc70475 | ||
| 
						 | 
					55a7ee4acf | 
@@ -10,12 +10,3 @@ insert_final_newline = true
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[*.md]
 | 
					[*.md]
 | 
				
			||||||
trim_trailing_whitespace = false
 | 
					trim_trailing_whitespace = false
 | 
				
			||||||
 | 
					 | 
				
			||||||
[*.sexp]
 | 
					 | 
				
			||||||
indent_size = 2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[*.yml]
 | 
					 | 
				
			||||||
indent_size = 2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[*.properties]
 | 
					 | 
				
			||||||
insert_final_newline = false
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										3
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							@@ -1,3 +0,0 @@
 | 
				
			|||||||
# Ignore changes in generated files
 | 
					 | 
				
			||||||
src/generated/resources/data/** linguist-generated
 | 
					 | 
				
			||||||
src/test/server-files/structures linguist-generated
 | 
					 | 
				
			||||||
							
								
								
									
										2
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/ISSUE_TEMPLATE/bug_report.md
									
									
									
									
										vendored
									
									
								
							@@ -11,6 +11,6 @@ labels: bug
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## Useful information to include:
 | 
					## Useful information to include:
 | 
				
			||||||
 - Minecraft version
 | 
					 - Minecraft version
 | 
				
			||||||
 - CC: Tweaked version
 | 
					 - CC: Restitched version
 | 
				
			||||||
 - Logs: These will be located in the `logs/` directory of your Minecraft instance. Please upload them as a gist or directly into this editor.
 | 
					 - Logs: These will be located in the `logs/` directory of your Minecraft instance. Please upload them as a gist or directly into this editor.
 | 
				
			||||||
 - Detailed reproduction steps: sometimes I can spot a bug pretty easily, but often it's much more obscure. The more information I have to help reproduce it, the quicker it'll get fixed.
 | 
					 - Detailed reproduction steps: sometimes I can spot a bug pretty easily, but often it's much more obscure. The more information I have to help reproduce it, the quicker it'll get fixed.
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										12
									
								
								.github/ISSUE_TEMPLATE/peripheral_shoutout.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								.github/ISSUE_TEMPLATE/peripheral_shoutout.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					name: Peripheral Shoutout
 | 
				
			||||||
 | 
					about: Made a Peripheral mod for CC:R? Let us know so we can give it a shoutout
 | 
				
			||||||
 | 
					labels: peripheralShoutout
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## What to include?
 | 
				
			||||||
 | 
					 - Link to the mod's Icon
 | 
				
			||||||
 | 
					 - Link to the mod
 | 
				
			||||||
 | 
					 - Mod Name
 | 
				
			||||||
 | 
					 - Basic description of the mod
 | 
				
			||||||
 | 
					 - Link to CC:R Peripheral Documentation for the mod
 | 
				
			||||||
							
								
								
									
										17
									
								
								.github/matchers/checkstyle.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								.github/matchers/checkstyle.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "problemMatcher": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "owner": "checkstyle",
 | 
				
			||||||
 | 
					            "pattern": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "regexp": "^([a-z]+) ([\\w./-]+):(\\d+):(\\d+): (.*)$",
 | 
				
			||||||
 | 
					                    "severity": 1,
 | 
				
			||||||
 | 
					                    "file": 2,
 | 
				
			||||||
 | 
					                    "line": 3,
 | 
				
			||||||
 | 
					                    "column": 4,
 | 
				
			||||||
 | 
					                    "message": 5
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										18
									
								
								.github/matchers/illuaminate.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								.github/matchers/illuaminate.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "problemMatcher": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "owner": "illuaminate",
 | 
				
			||||||
 | 
					            "severity": "warning",
 | 
				
			||||||
 | 
					            "pattern": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "regexp": "^([\\w./-]+):\\[(\\d+):(\\d+)\\-(?:\\d+):(?:\\d+)\\]: (.*) \\[([a-z:-]+)\\]$",
 | 
				
			||||||
 | 
					                    "file": 1,
 | 
				
			||||||
 | 
					                    "line": 2,
 | 
				
			||||||
 | 
					                    "column": 3,
 | 
				
			||||||
 | 
					                    "message": 4,
 | 
				
			||||||
 | 
					                    "code": 5
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										15
									
								
								.github/matchers/junit.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								.github/matchers/junit.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "problemMatcher": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "owner": "junit",
 | 
				
			||||||
 | 
					            "pattern": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "regexp": "^## ([\\w./-]+):(\\d+): (.*)$",
 | 
				
			||||||
 | 
					                    "file": 1,
 | 
				
			||||||
 | 
					                    "line": 2,
 | 
				
			||||||
 | 
					                    "message": 3
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										42
									
								
								.github/workflows/main-ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										42
									
								
								.github/workflows/main-ci.yml
									
									
									
									
										vendored
									
									
								
							@@ -9,11 +9,13 @@ jobs:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
    - uses: actions/checkout@v2
 | 
					    - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					    - name: Checkout submodules
 | 
				
			||||||
 | 
					      run: git submodule update --init --recursive
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: Set up Java 8
 | 
					    - name: Set up Java 16
 | 
				
			||||||
      uses: actions/setup-java@v1
 | 
					      uses: actions/setup-java@v1
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        java-version: 8
 | 
					        java-version: 16
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: Cache gradle dependencies
 | 
					    - name: Cache gradle dependencies
 | 
				
			||||||
      uses: actions/cache@v2
 | 
					      uses: actions/cache@v2
 | 
				
			||||||
@@ -23,31 +25,35 @@ jobs:
 | 
				
			|||||||
        restore-keys: |
 | 
					        restore-keys: |
 | 
				
			||||||
          ${{ runner.os }}-gradle-
 | 
					          ${{ runner.os }}-gradle-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: Disable Gradle daemon
 | 
				
			||||||
 | 
					      run: |
 | 
				
			||||||
 | 
					        mkdir -p ~/.gradle
 | 
				
			||||||
 | 
					        echo "org.gradle.daemon=false" >> ~/.gradle/gradle.properties
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: Build with Gradle
 | 
					    - name: Build with Gradle
 | 
				
			||||||
      run: |
 | 
					      run: |
 | 
				
			||||||
        ./gradlew assemble --no-daemon || ./gradlew assemble --no-daemon
 | 
					        ./gradlew assemble || ./gradlew assemble
 | 
				
			||||||
        ./gradlew downloadAssets --no-daemon || ./gradlew downloadAssets --no-daemon
 | 
					 | 
				
			||||||
        ./gradlew build
 | 
					        ./gradlew build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: Upload Jar
 | 
					    - name: Upload Jar
 | 
				
			||||||
      uses: actions/upload-artifact@v2
 | 
					      uses: actions/upload-artifact@v2
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        name: CC-Tweaked
 | 
					        name: cc-restitched
 | 
				
			||||||
        path: build/libs
 | 
					        path: build/libs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: Upload Coverage
 | 
					    - name: Parse test reports
 | 
				
			||||||
      run: bash <(curl -s https://codecov.io/bash)
 | 
					      run: ./tools/parse-reports.py
 | 
				
			||||||
      continue-on-error: true
 | 
					      if: ${{ failure() }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: Generate Java documentation stubs
 | 
					    - name: Cache pre-commit
 | 
				
			||||||
      run: ./gradlew luaJavadoc --no-daemon
 | 
					      uses: actions/cache@v2
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        path: ~/.cache/pre-commit
 | 
				
			||||||
 | 
					        key: ${{ runner.os }}-pre-commit-${{ hashFiles('config/pre-commit/config.yml') }}
 | 
				
			||||||
 | 
					        restore-keys: |
 | 
				
			||||||
 | 
					          ${{ runner.os }}-pre-commit-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: Lint Lua code
 | 
					    - name: Run linters
 | 
				
			||||||
      run: |
 | 
					      run: |
 | 
				
			||||||
        test -d bin || mkdir bin
 | 
					        pip install pre-commit
 | 
				
			||||||
        test -f bin/illuaminate || wget -q -Obin/illuaminate https://squiddev.cc/illuaminate/linux-x86-64/illuaminate
 | 
					        pre-commit run --config config/pre-commit/config.yml --show-diff-on-failure --all --color=always
 | 
				
			||||||
        chmod +x bin/illuaminate
 | 
					 | 
				
			||||||
        bin/illuaminate lint
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    - name: Check whitespace
 | 
					 | 
				
			||||||
      run: python3 tools/check-lines.py
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										19
									
								
								.github/workflows/make-doc.sh
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								.github/workflows/make-doc.sh
									
									
									
									
										vendored
									
									
								
							@@ -1,19 +0,0 @@
 | 
				
			|||||||
#!/usr/bin/env bash
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
set -eu
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
DEST="${GITHUB_REF#refs/*/}"
 | 
					 | 
				
			||||||
echo "Uploading docs to https://tweaked.cc/$DEST"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Setup ssh key
 | 
					 | 
				
			||||||
mkdir -p "$HOME/.ssh/"
 | 
					 | 
				
			||||||
echo "$SSH_KEY" > "$HOME/.ssh/key"
 | 
					 | 
				
			||||||
chmod 600 "$HOME/.ssh/key"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# And upload
 | 
					 | 
				
			||||||
rsync -avc -e "ssh -i $HOME/.ssh/key -o StrictHostKeyChecking=no -p $SSH_PORT" \
 | 
					 | 
				
			||||||
      "$GITHUB_WORKSPACE/build/docs/lua/" \
 | 
					 | 
				
			||||||
      "$SSH_USER@$SSH_HOST:/var/www/tweaked.cc/$DEST"
 | 
					 | 
				
			||||||
rsync -avc -e "ssh -i $HOME/.ssh/key -o StrictHostKeyChecking=no -p $SSH_PORT" \
 | 
					 | 
				
			||||||
      "$GITHUB_WORKSPACE/build/docs/javadoc/" \
 | 
					 | 
				
			||||||
      "$SSH_USER@$SSH_HOST:/var/www/tweaked.cc/$DEST/javadoc"
 | 
					 | 
				
			||||||
							
								
								
									
										50
									
								
								.github/workflows/make-doc.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										50
									
								
								.github/workflows/make-doc.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,50 +0,0 @@
 | 
				
			|||||||
name: Build documentation
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  push:
 | 
					 | 
				
			||||||
    branches:
 | 
					 | 
				
			||||||
    - mc-1.15.x
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:
 | 
					 | 
				
			||||||
  make_doc:
 | 
					 | 
				
			||||||
    name: Build
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - uses: actions/checkout@v2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    - name: Set up Java 8
 | 
					 | 
				
			||||||
      uses: actions/setup-java@v1
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        java-version: 8
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    - name: Cache gradle dependencies
 | 
					 | 
				
			||||||
      uses: actions/cache@v2
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        path: ~/.gradle/caches
 | 
					 | 
				
			||||||
        key: ${{ runner.os }}-gradle-${{ hashFiles('gradle.properties') }}
 | 
					 | 
				
			||||||
        restore-keys: |
 | 
					 | 
				
			||||||
          ${{ runner.os }}-gradle-
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    - name: Setup illuaminate
 | 
					 | 
				
			||||||
      run: |
 | 
					 | 
				
			||||||
        test -d bin || mkdir bin
 | 
					 | 
				
			||||||
        test -f bin/illuaminate || wget -q -Obin/illuaminate https://squiddev.cc/illuaminate/linux-x86-64/illuaminate
 | 
					 | 
				
			||||||
        chmod +x bin/illuaminate
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    - name: Setup node
 | 
					 | 
				
			||||||
      run: npm ci
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    - name: Build with Gradle
 | 
					 | 
				
			||||||
      run: ./gradlew compileJava --no-daemon || ./gradlew compileJava --no-daemon
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    - name: Generate documentation
 | 
					 | 
				
			||||||
      run: ./gradlew docWebsite javadoc --no-daemon
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    - name: Upload documentation
 | 
					 | 
				
			||||||
      run: .github/workflows/make-doc.sh 2> /dev/null
 | 
					 | 
				
			||||||
      env:
 | 
					 | 
				
			||||||
        SSH_KEY:  ${{ secrets.SSH_KEY  }}
 | 
					 | 
				
			||||||
        SSH_USER: ${{ secrets.SSH_USER }}
 | 
					 | 
				
			||||||
        SSH_HOST: ${{ secrets.SSH_HOST }}
 | 
					 | 
				
			||||||
        SSH_PORT: ${{ secrets.SSH_PORT }}
 | 
					 | 
				
			||||||
							
								
								
									
										17
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -3,27 +3,22 @@
 | 
				
			|||||||
/logs
 | 
					/logs
 | 
				
			||||||
/build
 | 
					/build
 | 
				
			||||||
/out
 | 
					/out
 | 
				
			||||||
/doc/out/
 | 
					 | 
				
			||||||
/node_modules
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Runtime directories
 | 
					# Runtime directories
 | 
				
			||||||
/run
 | 
					/run
 | 
				
			||||||
/run-*
 | 
					/run-*
 | 
				
			||||||
/test-files
 | 
					/test-files
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Autogenerated by IDE
 | 
				
			||||||
 | 
					/bin
 | 
				
			||||||
 | 
					/.settings
 | 
				
			||||||
 | 
					.classpath
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*.ipr
 | 
					*.ipr
 | 
				
			||||||
*.iws
 | 
					*.iws
 | 
				
			||||||
*.iml
 | 
					*.iml
 | 
				
			||||||
.idea
 | 
					.idea
 | 
				
			||||||
.gradle
 | 
					.gradle
 | 
				
			||||||
*.DS_Store
 | 
					*.DS_Store
 | 
				
			||||||
 | 
					.project
 | 
				
			||||||
/.classpath
 | 
					 | 
				
			||||||
/.project
 | 
					 | 
				
			||||||
/.settings
 | 
					 | 
				
			||||||
/.vscode
 | 
					 | 
				
			||||||
bin/
 | 
					 | 
				
			||||||
*.launch
 | 
					*.launch
 | 
				
			||||||
 | 
					 | 
				
			||||||
/src/generated/resources/.cache
 | 
					 | 
				
			||||||
/src/web/mount/*.d.ts
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					[submodule "src/main/resources/resourcepacks/overhaul"]
 | 
				
			||||||
 | 
						path = src/main/resources/resourcepacks/overhaul
 | 
				
			||||||
 | 
						url = https://github.com/3prm3/cc-pack
 | 
				
			||||||
							
								
								
									
										19
									
								
								.gitpod.Dockerfile
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								.gitpod.Dockerfile
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					FROM gitpod/workspace-base
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					USER gitpod
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Install custom tools, runtime, etc. using apt-get
 | 
				
			||||||
 | 
					# For example, the command below would install "bastet" - a command line tetris clone:
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# RUN sudo apt-get -q update && \
 | 
				
			||||||
 | 
					#     sudo apt-get install -yq bastet && \
 | 
				
			||||||
 | 
					#     sudo rm -rf /var/lib/apt/lists/*
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# More information: https://www.gitpod.io/docs/config-docker/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Install Java 8 and 16
 | 
				
			||||||
 | 
					RUN sudo apt-get -q update && \
 | 
				
			||||||
 | 
					    sudo apt install -yq openjdk-8-jdk openjdk-16-jdk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# This is so that you can use java 8 until such a time as you switch to java 16
 | 
				
			||||||
 | 
					RUN sudo update-java-alternatives --set java-1.16.0-openjdk-amd64
 | 
				
			||||||
							
								
								
									
										18
									
								
								.gitpod.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								.gitpod.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					image:
 | 
				
			||||||
 | 
					  file: .gitpod.Dockerfile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ports:
 | 
				
			||||||
 | 
					  - port: 25565
 | 
				
			||||||
 | 
					    onOpen: notify
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					vscode:
 | 
				
			||||||
 | 
					  extensions:
 | 
				
			||||||
 | 
					    - ms-azuretools.vscode-docker
 | 
				
			||||||
 | 
					    - redhat.java
 | 
				
			||||||
 | 
					    - richardwillis.vscode-gradle
 | 
				
			||||||
 | 
					    - vscjava.vscode-java-debug
 | 
				
			||||||
 | 
					    - vscode.github
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tasks:
 | 
				
			||||||
 | 
					  - init: ./gradlew
 | 
				
			||||||
							
								
								
									
										34
									
								
								.luacheckrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								.luacheckrc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					std = "max"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ignore = {
 | 
				
			||||||
 | 
					    -- Allow access to undefined globals or their fields. In the future we'll
 | 
				
			||||||
 | 
					    -- define all of CC's globals within this file
 | 
				
			||||||
 | 
					    '113', '143',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- FIXME: Ignore unused arguments and loop variables
 | 
				
			||||||
 | 
					    '212', '213',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -- Disable line is too long for now. It would be possible to clean
 | 
				
			||||||
 | 
					    -- this up in the future.
 | 
				
			||||||
 | 
					    '631',
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- Only run the linter on ROM and bios for now, as the treasure disks
 | 
				
			||||||
 | 
					-- are largely unsupported.
 | 
				
			||||||
 | 
					include_files = {
 | 
				
			||||||
 | 
					    'src/main/resources/assets/computercraft/lua/rom',
 | 
				
			||||||
 | 
					    'src/main/resources/assets/computercraft/lua/bios.lua'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					files['src/main/resources/assets/computercraft/lua/bios.lua'] = {
 | 
				
			||||||
 | 
					    -- Allow declaring and mutating globals
 | 
				
			||||||
 | 
					    allow_defined_top = true,
 | 
				
			||||||
 | 
					    ignore = { '112', '121', '122', '131', '142' },
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					files['src/main/resources/assets/computercraft/lua/rom/apis'] = {
 | 
				
			||||||
 | 
					    -- APIs may define globals on the top level. We'll ignore unused globals,
 | 
				
			||||||
 | 
					    -- as obviously they may be used outside that API.
 | 
				
			||||||
 | 
					    allow_defined_top = true,
 | 
				
			||||||
 | 
					    ignore = { '131' },
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										15
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
						"files.exclude": {
 | 
				
			||||||
 | 
							// Default Java Dev
 | 
				
			||||||
 | 
					        "**/.classpath": true,
 | 
				
			||||||
 | 
					        "**/.project": true,
 | 
				
			||||||
 | 
					        "**/.settings": true,
 | 
				
			||||||
 | 
					        "**/.factorypath": true,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Custom Hidden Files
 | 
				
			||||||
 | 
							"**/.bin": true,
 | 
				
			||||||
 | 
							"**/.editorconfig": true,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"java.configuration.updateBuildConfiguration": "automatic"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										110
									
								
								CONTRIBUTING.md
									
									
									
									
									
								
							
							
						
						
									
										110
									
								
								CONTRIBUTING.md
									
									
									
									
									
								
							@@ -1,110 +0,0 @@
 | 
				
			|||||||
# Contributing to CC: Tweaked
 | 
					 | 
				
			||||||
As with many open source projects, CC: Tweaked thrives on contributions from other people! This document (hopefully)
 | 
					 | 
				
			||||||
provides an introduction as to how to get started in helping out.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
If you've any other questions, [just ask the community][community] or [open an issue][new-issue].
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Reporting issues
 | 
					 | 
				
			||||||
If you have a bug, suggestion, or other feedback, the best thing to do is [file an issue][new-issue]. When doing so,
 | 
					 | 
				
			||||||
do use the issue templates - they provide a useful hint on what information to provide.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Translations
 | 
					 | 
				
			||||||
Translations are managed through [Weblate], an online interface for managing language strings. This is synced
 | 
					 | 
				
			||||||
automatically with GitHub, so please don't submit PRs adding/changing translations!
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Developing
 | 
					 | 
				
			||||||
In order to develop CC: Tweaked, you'll need to download the source code and then run it. This is a pretty simple
 | 
					 | 
				
			||||||
process. When building on Windows, Use `gradlew.bat` instead of `./gradlew`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 - **Clone the repository:** `git clone https://github.com/SquidDev-CC/CC-Tweaked.git && cd CC-Tweaked`
 | 
					 | 
				
			||||||
 - **Setup Forge:** `./gradlew build`
 | 
					 | 
				
			||||||
 - **Run Minecraft:** `./gradlew runClient` (or run the `GradleStart` class from your IDE).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
If you want to run CC:T in a normal Minecraft instance, run `./gradlew build` and copy the `.jar` from `build/libs`.
 | 
					 | 
				
			||||||
These commands may take a few minutes to run the first time, as the environment is set up, but should be much faster
 | 
					 | 
				
			||||||
afterwards.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The following sections describe the more niche sections of CC: Tweaked's build system. Some bits of these are
 | 
					 | 
				
			||||||
quite-complex, and (dare I say) over-engineered, so you may wish to ignore them. Well tested/documented PRs are always
 | 
					 | 
				
			||||||
preferred (and I'd definitely recommend setting up the tooling if you're doing serious development work), but for
 | 
					 | 
				
			||||||
small changes it can be a lot.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### Code linters
 | 
					 | 
				
			||||||
CC: Tweaked uses a couple of "linters" on its source code, to enforce a consistent style across the project. While these
 | 
					 | 
				
			||||||
are run whenever you submit a PR, it's often useful to run this before committing.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 - **[Checkstyle]:** Checks Java code to ensure it is consistently formatted. This can be run with `./gradlew build` or
 | 
					 | 
				
			||||||
   `./gradle check`.
 | 
					 | 
				
			||||||
 - **[illuaminate]:** Checks Lua code for semantic and styleistic issues. See [the usage section][illuaminate-usage] for
 | 
					 | 
				
			||||||
   how to download and run it. You may need to generate the Java documentation stubs (see "Documentation" below) for all
 | 
					 | 
				
			||||||
   lints to pass.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### Documentation
 | 
					 | 
				
			||||||
When writing documentation for [CC: Tweaked's documentation website][docs], it may be useful to build the documentation
 | 
					 | 
				
			||||||
and preview it yourself before submitting a PR.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Building all documentation is, sadly, a multi-stage process (though this is largely hidden by Gradle). First we need to
 | 
					 | 
				
			||||||
convert Java doc-comments into Lua ones, we also generate some Javascript to embed. All of this is then finally fed into
 | 
					 | 
				
			||||||
illuaminate, which spits out our HTML.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#### Setting up the tooling
 | 
					 | 
				
			||||||
For various reasons, getting the environment set up to build documentation can be pretty complex. I'd quite like to
 | 
					 | 
				
			||||||
automate this via Docker and/or nix in the future, but this needs to be done manually for now.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This tooling is only needed if you need to build the whole website. If you just want to generate the Lua stubs, you can
 | 
					 | 
				
			||||||
skp this section.
 | 
					 | 
				
			||||||
 - Install Node/npm and install our Node packages with `npm ci`.
 | 
					 | 
				
			||||||
 - Install [illuaminate][illuaminate-usage] as described above.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#### Building documentation
 | 
					 | 
				
			||||||
Gradle should be your entrypoint to building most documentation. There's two tasks which are of interest:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 - `./gradlew luaJavadoc` - Generate documentation stubs for Java methods.
 | 
					 | 
				
			||||||
 - `./gradlew docWebsite` - Generate the whole website (including Javascript pages). The resulting HTML is stored at
 | 
					 | 
				
			||||||
   `./build/docs/lua/`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#### Writing documentation
 | 
					 | 
				
			||||||
illuaminate's documentation system is not currently documented (somewhat ironic), but is _largely_ the same as
 | 
					 | 
				
			||||||
[ldoc][ldoc]. Documentation comments are written in Markdown, 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Our markdown engine does _not_ support GitHub flavoured markdown, and so does not support all the features one might
 | 
					 | 
				
			||||||
expect (such as tables). It is very much recommended that you build and preview the docs locally first.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### Testing
 | 
					 | 
				
			||||||
Thankfully running tests is much simpler than running the documentation generator! `./gradlew check` will run the
 | 
					 | 
				
			||||||
entire test suite (and some additional bits of verification).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Before we get into writing tests, it's worth mentioning the various test suites that CC: Tweaked has:
 | 
					 | 
				
			||||||
 - "Core" Java (`./src/test/java`): These test core bits of the mod which don't require any Minecraft interaction.
 | 
					 | 
				
			||||||
   This includes the `@LuaFunction` system, file system code, etc...
 | 
					 | 
				
			||||||
   
 | 
					 | 
				
			||||||
   These tests are run by `./gradlew test`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 - CraftOS (`./src/test/resources/test-rom/`): These tests are written in Lua, and ensure the Lua environment, libraries
 | 
					 | 
				
			||||||
   and programs work as expected. These are (generally) written to be able to be run on emulators too, to provide some
 | 
					 | 
				
			||||||
   sort of compliance test.
 | 
					 | 
				
			||||||
   
 | 
					 | 
				
			||||||
   These tests are run by the '"Core" Java' test suite, and so are also run with `./gradlew test`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 - In-game (`./src/test/java/dan200/computercraft/ingame/`): These tests are run on an actual Minecraft server, using
 | 
					 | 
				
			||||||
   [the same system Mojang do][mc-test]. The aim of these is to test in-game behaviour of blocks and peripherals.
 | 
					 | 
				
			||||||
   
 | 
					 | 
				
			||||||
   These are run by `./gradlew testInGame`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## CraftOS tests
 | 
					 | 
				
			||||||
CraftOS's tests are written using a test system called "mcfly", heavily inspired by [busted] (and thus RSpec). Groups of
 | 
					 | 
				
			||||||
tests go inside `describe` blocks, and a single test goes inside `it`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Assertions are generally written using `expect` (inspired by Hamcrest and the like). For instance, `expect(foo):eq("bar")`
 | 
					 | 
				
			||||||
asserts that your variable `foo` is equal to the expected value `"bar"`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[new-issue]: https://github.com/SquidDev-CC/CC-Tweaked/issues/new/choose "Create a new issue"
 | 
					 | 
				
			||||||
[community]: README.md#Community "Get in touch with the community."
 | 
					 | 
				
			||||||
[checkstyle]: https://checkstyle.org/
 | 
					 | 
				
			||||||
[illuaminate]: https://github.com/SquidDev/illuaminate/ "Illuaminate on GitHub"
 | 
					 | 
				
			||||||
[illuaminate-usage]: https://github.com/SquidDev/illuaminate/blob/master/README.md#usage "Installing Illuaminate"
 | 
					 | 
				
			||||||
[weblate]: https://i18n.tweaked.cc/projects/cc-tweaked/minecraft/ "CC: Tweaked weblate instance"
 | 
					 | 
				
			||||||
[docs]: https://tweaked.cc/ "CC: Tweaked documentation"
 | 
					 | 
				
			||||||
[ldoc]: http://stevedonovan.github.io/ldoc/ "ldoc, a Lua documentation generator."
 | 
					 | 
				
			||||||
[mc-test]: https://www.youtube.com/watch?v=vXaWOJTCYNg
 | 
					 | 
				
			||||||
[busted]: https://github.com/Olivine-Labs/busted "busted: Elegant Lua unit testing."
 | 
					 | 
				
			||||||
							
								
								
									
										14
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								LICENSE
									
									
									
									
									
								
							@@ -19,14 +19,14 @@ Mod: The mod code designated by the present license, in source form, binary
 | 
				
			|||||||
form, as obtained standalone, as part of a wider distribution or resulting from
 | 
					form, as obtained standalone, as part of a wider distribution or resulting from
 | 
				
			||||||
the compilation of the original or modified sources.
 | 
					the compilation of the original or modified sources.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Dependency: Code required for the mod to work properly. This includes 
 | 
					Dependency: Code required for the mod to work properly. This includes
 | 
				
			||||||
dependencies required to compile the code as well as any file or modification
 | 
					dependencies required to compile the code as well as any file or modification
 | 
				
			||||||
that is explicitly or implicitly required for the mod to be working.
 | 
					that is explicitly or implicitly required for the mod to be working.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1. Scope
 | 
					1. Scope
 | 
				
			||||||
--------
 | 
					--------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The present license is granted to any user of the mod. As a prerequisite, 
 | 
					The present license is granted to any user of the mod. As a prerequisite,
 | 
				
			||||||
a user must own a legally acquired copy of Minecraft
 | 
					a user must own a legally acquired copy of Minecraft
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2. Liability
 | 
					2. Liability
 | 
				
			||||||
@@ -41,13 +41,13 @@ or misuse of this mod fall on the user.
 | 
				
			|||||||
3. Play rights
 | 
					3. Play rights
 | 
				
			||||||
--------------
 | 
					--------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The user is allowed to install this mod on a Minecraft client or server and to play 
 | 
					The user is allowed to install this mod on a Minecraft client or server and to play
 | 
				
			||||||
without restriction.
 | 
					without restriction.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
4. Modification rights
 | 
					4. Modification rights
 | 
				
			||||||
----------------------
 | 
					----------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The user has the right to decompile the source code, look at either the 
 | 
					The user has the right to decompile the source code, look at either the
 | 
				
			||||||
decompiled version or the original source code, and to modify it.
 | 
					decompiled version or the original source code, and to modify it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
5. Distribution of original or modified copy rights
 | 
					5. Distribution of original or modified copy rights
 | 
				
			||||||
@@ -61,10 +61,10 @@ include:
 | 
				
			|||||||
   - patch to its source or binary files
 | 
					   - patch to its source or binary files
 | 
				
			||||||
   - any copy of a portion of its binary source files
 | 
					   - any copy of a portion of its binary source files
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The user is allowed to redistribute this mod partially, in totality, or 
 | 
					The user is allowed to redistribute this mod partially, in totality, or
 | 
				
			||||||
included in a distribution.
 | 
					included in a distribution.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
When distributing binary files, the user must provide means to obtain its 
 | 
					When distributing binary files, the user must provide means to obtain its
 | 
				
			||||||
entire set of sources or modified sources at no cost.
 | 
					entire set of sources or modified sources at no cost.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
All distributions of this mod must remain licensed under the CCPL.
 | 
					All distributions of this mod must remain licensed under the CCPL.
 | 
				
			||||||
@@ -92,7 +92,7 @@ must be made available at no cost and remain licensed under the CCPL.
 | 
				
			|||||||
---------------
 | 
					---------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If you choose to contribute code or assets to be included in this mod, you
 | 
					If you choose to contribute code or assets to be included in this mod, you
 | 
				
			||||||
agree that, if added to to the main repository at 
 | 
					agree that, if added to to the main repository at
 | 
				
			||||||
https://github.com/dan200/ComputerCraft, your contributions will be covered by
 | 
					https://github.com/dan200/ComputerCraft, your contributions will be covered by
 | 
				
			||||||
this license, and that Daniel Ratcliffe will retain the right to re-license the
 | 
					this license, and that Daniel Ratcliffe will retain the right to re-license the
 | 
				
			||||||
mod, including your contributions, in part or in whole, under other licenses.
 | 
					mod, including your contributions, in part or in whole, under other licenses.
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										118
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										118
									
								
								README.md
									
									
									
									
									
								
							@@ -1,72 +1,74 @@
 | 
				
			|||||||
# 
 | 
					<img src="logo.png" alt="CC: Restitched" width="100%"/>
 | 
				
			||||||
[](https://github.com/SquidDev-CC/CC-Tweaked/actions "Current build status") [](https://minecraft.curseforge.com/projects/cc-tweaked "Download CC: Tweaked on CurseForge")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
CC: Tweaked is a fork of [ComputerCraft](https://github.com/dan200/ComputerCraft), adding programmable computers,
 | 
					[](https://github.com/cc-tweaked/cc-restitched/actions "Current build status")
 | 
				
			||||||
turtles and more to Minecraft.
 | 
					[](https://www.curseforge.com/minecraft/mc-mods/cc-restitched "Download CC:  Restitched on CurseForge")
 | 
				
			||||||
 | 
					[](https://gitpod.io/#https://github.com/cc-tweaked/cc-restitched/tree/1.17-alpha)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## What?
 | 
					# CC: R Version VS CC: T Version
 | 
				
			||||||
ComputerCraft has always held a fond place in my heart: it's the mod which really got me into Minecraft, and it's the
 | 
					CC: R Strives to maintain perfect pairity with CC: T, however in some cases this is not possible, so CC: R might have a "newer" version than what CC: T has, these newer versions will be primarily bugfixes and the like because [Fabric](https://fabricmc.net/) is "weird" when porting a Forge mod.
 | 
				
			||||||
mod which has kept me playing it for many years. However, development of the original mod has slowed, as the original
 | 
					 | 
				
			||||||
developers have had less time to work on the mod, and moved onto other projects and commitments.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
CC: Tweaked (or CC:T for short) is an attempt to continue ComputerCraft's legacy. It's not intended to be a competitor
 | 
					## What is CC: Restiched
 | 
				
			||||||
to CC, nor do I want to take it in a vastly different direction to the original mod. Instead, CC:T focuses on making the
 | 
					This is an fork of [Zundrel/cc-tweaked-fabric](https://github.com/Zundrel/cc-tweaked-fabric) who's goal was to port [SquidDev-CC/CC-Tweaked](https://github.com/SquidDev-CC/CC-Tweaked) to the [Fabric](https://fabricmc.net/) modloader. I picked up maintaining the mod because the team working on Zundrel's fork can no longer mantain it so, I picked it up to make it as equal as possible with CC: T.
 | 
				
			||||||
ComputerCraft experience as _solid_ as possible, ironing out any wrinkles that may have developed over time.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Features
 | 
					## Resource Packs
 | 
				
			||||||
CC: Tweaked contains all the features of the latest version of ComputerCraft, as well as numerous fixes, performance
 | 
					This mod includes textures that are more in-line with the style of Mojang's new texture-artist, Jappa. If you prefer the original textures, enable the "Classic" resource pack.
 | 
				
			||||||
improvements and several nifty additions. I'd recommend checking out [the releases page](https://github.com/SquidDev-CC/CC-Tweaked/releases)
 | 
					 | 
				
			||||||
to see the full set of changes, but here's a couple of the more interesting additions:
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 - Improvements to the `http` library, including websockets, support for other HTTP methods (`PUT`, `DELETE`, etc...)
 | 
					<img src="https://raw.githubusercontent.com/3prm3/cc-pack/main/pack.png" alt="CC: Restitched" width="16"  height="16"/> [3prm3/cc-pack](https://github.com/3prm3/cc-pack/)
 | 
				
			||||||
   and configurable limits on HTTP usage.
 | 
					We also have a second resourcepack made by [3prm3](https://github.com/3prm3), it features a complete overhaul and can be enabled by enabling the `overhaul` resource pack, go check out his resource pack over here!
 | 
				
			||||||
 - Full-block wired modems, allowing one to wrap non-solid peripherals (such as turtles, or chests if Plethora is
 | 
					 | 
				
			||||||
   installed).
 | 
					 | 
				
			||||||
 - Pocket computers can be held like maps, allowing you to view the screen without entering a GUI.
 | 
					 | 
				
			||||||
 - Printed pages and books can be placed in item frames and held like maps.
 | 
					 | 
				
			||||||
 - Several profiling and administration tools for server owners, via the `/computercraft` command. This allows operators
 | 
					 | 
				
			||||||
   to track which computers are hogging resources, turn on and shutdown multiple computers at once and interact with
 | 
					 | 
				
			||||||
   computers remotely.
 | 
					 | 
				
			||||||
 - Closer emulation of standard Lua, adding the `debug` and `io` libraries. This also enables seeking within binary
 | 
					 | 
				
			||||||
   files, meaning you don't need to read large files into memory.
 | 
					 | 
				
			||||||
 - Allow running multiple computers on multiple threads, reducing latency on worlds with many computers.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Relation to CCTweaks?
 | 
					# Does this work with shaders/[Sodium?](https://github.com/CaffeineMC/sodium-fabric)
 | 
				
			||||||
This mod has nothing to do with CCTweaks, though there is no denying the name is a throwback to it. That being said,
 | 
					* [ YES ] Sodium
 | 
				
			||||||
several features have been included, such as full block modems, the Cobalt runtime and map-like rendering for pocket
 | 
					* [ YES ] Optifine
 | 
				
			||||||
computers.
 | 
						* Works with VBO Rendering (automatically set)
 | 
				
			||||||
 | 
						* No issues
 | 
				
			||||||
 | 
					* [ EHH ] Iris Shaders
 | 
				
			||||||
 | 
						* "Works" with TBO Rendering (Default)
 | 
				
			||||||
 | 
						* Crashes with VBO Rendering
 | 
				
			||||||
 | 
						* <details>
 | 
				
			||||||
 | 
							<summary>Shaders are broken</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							* Shaders will cause varrying results ranging from monitors being invisible, to straight up crashing.
 | 
				
			||||||
 | 
							* Not using shaders will result in odd Z-Fighting of the monitor display and the transparent texture
 | 
				
			||||||
 | 
								- 
 | 
				
			||||||
 | 
								- 
 | 
				
			||||||
 | 
							</details>
 | 
				
			||||||
 | 
					* [ YES ] Canvas
 | 
				
			||||||
 | 
						* Works with TBO Rendering (Default)
 | 
				
			||||||
 | 
						* Scuffed with VBO Rendering
 | 
				
			||||||
 | 
						* <details>
 | 
				
			||||||
 | 
							<summary>VBO is broken</summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  		Monitors are just... scuffed beyond belief.
 | 
				
			||||||
 | 
							- 
 | 
				
			||||||
 | 
							- 
 | 
				
			||||||
 | 
								* The content to the left is supposed to be on the monitors to the right, also the bottom one is supposed to `black/white` not colored.
 | 
				
			||||||
 | 
							* Turtle Texture for some reason?
 | 
				
			||||||
 | 
								- 
 | 
				
			||||||
 | 
							</details>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Contributing
 | 
					## Contributing
 | 
				
			||||||
Any contribution is welcome, be that using the mod, reporting bugs or contributing code. If you want to get started
 | 
					Any contribution is welcome, be that using the mod, reporting bugs or contributing code. In order to start helping develop CC: R there are a few rules;
 | 
				
			||||||
developing the mod, [check out the instructions here](CONTRIBUTING.md#developing).
 | 
					1) Follow the [Fabric](https://fabricmc.net/) programming guidelines as close as possible. This means you have to use [`loom`](https://fabricmc.net/wiki/tutorial:mappings) mappings, if you use anything else, your code will be rejected.
 | 
				
			||||||
 | 
					2) You cannot intentionally implement bugs and security vulnerabilities.
 | 
				
			||||||
 | 
					3) Unless the code is taken directly from CC: Tweaked, `lua` code is offlimits from alteration.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Bleeding Edge Builds
 | 
				
			||||||
 | 
					Bleeding edge builds can be found [here](https://github.com/cc-tweaked/cc-restitched/actions) at Github Actions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Community
 | 
					## Community
 | 
				
			||||||
If you need help getting started with CC: Tweaked, want to show off your latest project, or just want to chat about
 | 
					If you need help getting started with CC: Restitched, want to show off your latest project, or just want to chat about ComputerCraft, here is the [Forum](https://forums.computercraft.cc/) and the [Discord](https://discord.gg/H2UyJXe).
 | 
				
			||||||
ComputerCraft we have a [forum](https://forums.computercraft.cc/) and [Discord guild](https://discord.computercraft.cc)!
 | 
					 | 
				
			||||||
There's also a fairly populated, albeit quiet [IRC channel](http://webchat.esper.net/?channels=computercraft), if that's
 | 
					 | 
				
			||||||
more your cup of tea.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
I'd generally recommend you don't contact me directly (email, DM, etc...) unless absolutely necessary (i.e. in order to
 | 
					## Known Bugs/Issues
 | 
				
			||||||
report exploits). You'll get a far quicker response if you ask the whole community!
 | 
					Main Known issue
 | 
				
			||||||
 | 
					* Mods that add blocks that can be used as peripherals for CC: T on Forge, don't work with CC: R.
 | 
				
			||||||
 | 
						* This is because of the differences between Forge and [Fabric](https://fabricmc.net/), and that mod devs, to my knowledge have not agreed upon a standard method in which to implement cross compatibility between mods,
 | 
				
			||||||
 | 
					* Occasionally a computer will say "File not found" when running a built in program, this is normal just hold `crtl+r` to reboot it.
 | 
				
			||||||
 | 
						* We do not know what causes it directly, however it happens when the world is `/reload`ed, and currently running programs are not affected so nothing *should break*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Using
 | 
					## Perpherals
 | 
				
			||||||
CC: Tweaked is hosted on my maven repo, and so is relatively simple to depend on. You may wish to add a soft (or hard)
 | 
					Unfortunately, unlike the original CC: Tweaked project, CC: Restitched, does not have any actual peripheral mods, currently the only one we have is an example for mod devs to get started with making/adding the peripheral API to their mods!
 | 
				
			||||||
dependency in your `mods.toml` file, with the appropriate version bounds, to ensure that API functionality you depend
 | 
					 | 
				
			||||||
on is present.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
```groovy
 | 
					If you're a mod dev, made a mod with CC: R peripheral support OR if you're a player who found a mod with CC: R support, please open an [issue here](https://github.com/cc-tweaked/cc-restitched/issues/new?assignees=&labels=peripheralShoutout&template=peripheral_shoutout.md) to let us know so we can add it to the list!
 | 
				
			||||||
repositories {
 | 
					 | 
				
			||||||
  maven { url 'https://squiddev.cc/maven/' }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
dependencies {
 | 
					*  [CC Peripheral Test [1.16.5]](https://github.com/Toad-Dev/cc-peripheral-test)
 | 
				
			||||||
  implementation fg.deobf("org.squiddev:cc-tweaked-${mc_version}:${cct_version}")
 | 
						* This is an example mod for how to make peripherals that work as a block, or as a turtle upgrade!
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
You should also be careful to only use classes within the `dan200.computercraft.api` package. Non-API classes are
 | 
					 | 
				
			||||||
subject to change at any point. If you depend on functionality outside the API, file an issue, and we can look into
 | 
					 | 
				
			||||||
exposing more features.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
We bundle the API sources with the jar, so documentation should be easily viewable within your editor. Alternatively,
 | 
					 | 
				
			||||||
the generated documentation [can be browsed online](https://tweaked.cc/javadoc/).
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										627
									
								
								build.gradle
									
									
									
									
									
								
							
							
						
						
									
										627
									
								
								build.gradle
									
									
									
									
									
								
							@@ -1,397 +1,102 @@
 | 
				
			|||||||
buildscript {
 | 
					 | 
				
			||||||
    repositories {
 | 
					 | 
				
			||||||
        jcenter()
 | 
					 | 
				
			||||||
        mavenCentral()
 | 
					 | 
				
			||||||
        maven {
 | 
					 | 
				
			||||||
            name = "forge"
 | 
					 | 
				
			||||||
            url = "https://files.minecraftforge.net/maven"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    dependencies {
 | 
					 | 
				
			||||||
        classpath 'com.google.code.gson:gson:2.8.1'
 | 
					 | 
				
			||||||
        classpath 'net.minecraftforge.gradle:ForgeGradle:4.1.3'
 | 
					 | 
				
			||||||
        classpath 'net.sf.proguard:proguard-gradle:6.1.0beta2'
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
plugins {
 | 
					plugins {
 | 
				
			||||||
 | 
					    id 'fabric-loom' version '0.9-SNAPSHOT'
 | 
				
			||||||
 | 
					    id 'maven-publish'
 | 
				
			||||||
    id "checkstyle"
 | 
					    id "checkstyle"
 | 
				
			||||||
    id "jacoco"
 | 
					    id "com.github.hierynomus.license" version "0.16.1"
 | 
				
			||||||
    id "com.github.hierynomus.license" version "0.15.0"
 | 
					 | 
				
			||||||
    id "com.matthewprenger.cursegradle" version "1.4.0"
 | 
					 | 
				
			||||||
    id "com.github.breadmoirai.github-release" version "2.2.12"
 | 
					 | 
				
			||||||
    id "org.jetbrains.kotlin.jvm" version "1.3.72"
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
apply plugin: 'net.minecraftforge.gradle'
 | 
					 | 
				
			||||||
apply plugin: 'maven-publish'
 | 
					 | 
				
			||||||
apply plugin: 'maven'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
version = mod_version
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
group = "org.squiddev"
 | 
					 | 
				
			||||||
archivesBaseName = "cc-tweaked-${mc_version}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
java {
 | 
					java {
 | 
				
			||||||
    toolchain {
 | 
					    toolchain {
 | 
				
			||||||
        languageVersion = JavaLanguageVersion.of(8)
 | 
					        languageVersion = JavaLanguageVersion.of(16)
 | 
				
			||||||
 | 
					        vendor = JvmVendorSpec.ADOPTOPENJDK
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
minecraft {
 | 
					version = mod_version
 | 
				
			||||||
    runs {
 | 
					 | 
				
			||||||
        client {
 | 
					 | 
				
			||||||
            workingDirectory project.file('run')
 | 
					 | 
				
			||||||
            property 'forge.logging.markers', 'REGISTRIES'
 | 
					 | 
				
			||||||
            property 'forge.logging.console.level', 'debug'
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            mods {
 | 
					group = "dan200.computercraft"
 | 
				
			||||||
                computercraft {
 | 
					archivesBaseName = "cc-restiched"
 | 
				
			||||||
                    source sourceSets.main
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        server {
 | 
					 | 
				
			||||||
            workingDirectory project.file("run/server")
 | 
					 | 
				
			||||||
            property 'forge.logging.markers', 'REGISTRIES'
 | 
					 | 
				
			||||||
            property 'forge.logging.console.level', 'debug'
 | 
					 | 
				
			||||||
            arg "--nogui"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            mods {
 | 
					 | 
				
			||||||
                computercraft {
 | 
					 | 
				
			||||||
                    source sourceSets.main
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        data {
 | 
					 | 
				
			||||||
            workingDirectory project.file('run')
 | 
					 | 
				
			||||||
            property 'forge.logging.markers', 'REGISTRIES'
 | 
					 | 
				
			||||||
            property 'forge.logging.console.level', 'debug'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            args '--mod', 'computercraft', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
 | 
					 | 
				
			||||||
            mods {
 | 
					 | 
				
			||||||
                computercraft {
 | 
					 | 
				
			||||||
                    source sourceSets.main
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        testServer {
 | 
					 | 
				
			||||||
            workingDirectory project.file('test-files/server')
 | 
					 | 
				
			||||||
            parent runs.server
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            mods {
 | 
					 | 
				
			||||||
                cctest {
 | 
					 | 
				
			||||||
                    source sourceSets.test
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    mappings channel: 'official', version: project.mc_version
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    accessTransformer file('src/main/resources/META-INF/accesstransformer.cfg')
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
sourceSets {
 | 
					 | 
				
			||||||
    main.resources {
 | 
					 | 
				
			||||||
        srcDir 'src/generated/resources'
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
repositories {
 | 
					repositories {
 | 
				
			||||||
    mavenCentral()
 | 
					    mavenCentral()
 | 
				
			||||||
 | 
					    maven { url 'https://jitpack.io' }
 | 
				
			||||||
 | 
					    maven { url 'https://api.modrinth.com/maven'}
 | 
				
			||||||
 | 
					    maven { url "https://maven.shedaniel.me/" }
 | 
				
			||||||
 | 
					    maven { url "https://maven.terraformersmc.com/" }
 | 
				
			||||||
    maven {
 | 
					    maven {
 | 
				
			||||||
        name "SquidDev"
 | 
					        name "SquidDev"
 | 
				
			||||||
        url "https://squiddev.cc/maven"
 | 
					        url "https://squiddev.cc/maven"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					loom {
 | 
				
			||||||
 | 
					    accessWidenerPath = file("src/main/resources/cc.accesswidener")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
configurations {
 | 
					configurations {
 | 
				
			||||||
    shade
 | 
					    implementation.extendsFrom shade
 | 
				
			||||||
    compile.extendsFrom shade
 | 
					 | 
				
			||||||
    deployerJars
 | 
					 | 
				
			||||||
    cctJavadoc
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dependencies {
 | 
					dependencies {
 | 
				
			||||||
    checkstyle "com.puppycrawl.tools:checkstyle:8.25"
 | 
					    checkstyle 'com.puppycrawl.tools:checkstyle:8.45.1'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}"
 | 
					    minecraft "com.mojang:minecraft:${mc_version}"
 | 
				
			||||||
 | 
					    mappings "net.fabricmc:yarn:${mc_version}+build.${mappings_version}:v2"
 | 
				
			||||||
 | 
					    modImplementation "net.fabricmc:fabric-loader:${fabric_loader_version}"
 | 
				
			||||||
 | 
					    modImplementation "net.fabricmc.fabric-api:fabric-api:${fabric_api_version}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    compileOnly fg.deobf("mezz.jei:jei-1.15.2:6.0.0.3:api")
 | 
					    modApi("me.shedaniel.cloth:cloth-config-fabric:${cloth_config_version}") {
 | 
				
			||||||
    compileOnly fg.deobf("com.blamejared.crafttweaker:CraftTweaker-1.15.2:6.0.0.9")
 | 
					        exclude(group: "net.fabricmc.fabric-api")
 | 
				
			||||||
 | 
					 | 
				
			||||||
    runtimeOnly fg.deobf("mezz.jei:jei-1.15.2:6.0.0.3")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    compileOnly 'com.google.auto.service:auto-service:1.0-rc7'
 | 
					 | 
				
			||||||
    annotationProcessor 'com.google.auto.service:auto-service:1.0-rc7'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    shade 'org.squiddev:Cobalt:0.5.1-SNAPSHOT'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
 | 
					 | 
				
			||||||
    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.7.0'
 | 
					 | 
				
			||||||
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
 | 
					 | 
				
			||||||
    testImplementation 'org.hamcrest:hamcrest:2.2'
 | 
					 | 
				
			||||||
    testImplementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72'
 | 
					 | 
				
			||||||
    testImplementation 'org.jetbrains.kotlin:kotlin-reflect:1.3.72'
 | 
					 | 
				
			||||||
    testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.8'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    deployerJars "org.apache.maven.wagon:wagon-ssh:3.0.0"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    cctJavadoc 'cc.tweaked:cct-javadoc:1.3.0'
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Compile tasks
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
javadoc {
 | 
					 | 
				
			||||||
    include "dan200/computercraft/api/**/*.java"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
task luaJavadoc(type: Javadoc) {
 | 
					 | 
				
			||||||
    description "Generates documentation for Java-side Lua functions."
 | 
					 | 
				
			||||||
    group "documentation"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    source = sourceSets.main.allJava
 | 
					 | 
				
			||||||
    destinationDir = file("${project.docsDir}/luaJavadoc")
 | 
					 | 
				
			||||||
    classpath = sourceSets.main.compileClasspath
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    options.docletpath = configurations.cctJavadoc.files as List
 | 
					 | 
				
			||||||
    options.doclet = "cc.tweaked.javadoc.LuaDoclet"
 | 
					 | 
				
			||||||
    options.noTimestamp = false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    javadocTool = javaToolchains.javadocToolFor {
 | 
					 | 
				
			||||||
        languageVersion = JavaLanguageVersion.of(11)
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    modImplementation "com.terraformersmc:modmenu:${modmenu_version}"
 | 
				
			||||||
 | 
					    modImplementation "me.shedaniel.cloth.api:cloth-utils-v1:${cloth_api_version}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    implementation 'com.electronwill.night-config:toml:3.6.3'
 | 
				
			||||||
 | 
					    implementation 'com.google.code.findbugs:jsr305:3.0.2'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    shade 'org.squiddev:Cobalt:0.5.2-SNAPSHOT'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    include "me.shedaniel.cloth.api:cloth-utils-v1:${cloth_api_version}"
 | 
				
			||||||
 | 
					    include 'com.electronwill.night-config:core:3.6.3'
 | 
				
			||||||
 | 
					    include 'com.electronwill.night-config:toml:3.6.3'
 | 
				
			||||||
 | 
					    include "me.shedaniel.cloth:cloth-config-fabric:${cloth_config_version}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    modRuntime "me.shedaniel:RoughlyEnoughItems-api-fabric:6.0.254-alpha"
 | 
				
			||||||
 | 
					    modRuntime "me.shedaniel:RoughlyEnoughItems-fabric:6.0.254-alpha"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					processResources {
 | 
				
			||||||
 | 
					    inputs.property "version", project.version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						filesMatching("fabric.mod.json") {
 | 
				
			||||||
 | 
							expand "version": project.version
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ensure that the encoding is set to UTF-8, no matter what the system default is
 | 
				
			||||||
 | 
					// this fixes some edge cases with special characters not displaying correctly
 | 
				
			||||||
 | 
					// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
 | 
				
			||||||
 | 
					tasks.withType(JavaCompile) {
 | 
				
			||||||
 | 
					    options.encoding = "UTF-8"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
 | 
				
			||||||
 | 
					// if it is present.
 | 
				
			||||||
 | 
					// If you remove this task, sources will not be generated.
 | 
				
			||||||
 | 
					task sourcesJar(type: Jar, dependsOn: classes) {
 | 
				
			||||||
 | 
					    classifier = "sources"
 | 
				
			||||||
 | 
					    from sourceSets.main.allSource
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jar {
 | 
					jar {
 | 
				
			||||||
    dependsOn javadoc
 | 
					    from "LICENSE"
 | 
				
			||||||
 | 
					 | 
				
			||||||
    manifest {
 | 
					 | 
				
			||||||
        attributes(["Specification-Title": "computercraft",
 | 
					 | 
				
			||||||
                    "Specification-Vendor": "SquidDev",
 | 
					 | 
				
			||||||
                    "Specification-Version": "1",
 | 
					 | 
				
			||||||
                    "Implementation-Title": "CC: Tweaked",
 | 
					 | 
				
			||||||
                    "Implementation-Version": "${mod_version}",
 | 
					 | 
				
			||||||
                    "Implementation-Vendor" :"SquidDev",
 | 
					 | 
				
			||||||
                    "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")])
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    from (sourceSets.main.allSource) {
 | 
					 | 
				
			||||||
        include "dan200/computercraft/api/**/*.java"
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    from configurations.shade.collect { it.isDirectory() ? it : zipTree(it) }
 | 
					    from configurations.shade.collect { it.isDirectory() ? it : zipTree(it) }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[compileJava, compileTestJava].forEach {
 | 
					 | 
				
			||||||
    it.configure {
 | 
					 | 
				
			||||||
        options.compilerArgs << "-Xlint" << "-Xlint:-processing"
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.nio.charset.StandardCharsets
 | 
					 | 
				
			||||||
import java.nio.file.*
 | 
					 | 
				
			||||||
import java.util.zip.*
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.google.gson.GsonBuilder
 | 
					 | 
				
			||||||
import com.google.gson.JsonElement
 | 
					 | 
				
			||||||
import com.hierynomus.gradle.license.tasks.LicenseCheck
 | 
					import com.hierynomus.gradle.license.tasks.LicenseCheck
 | 
				
			||||||
import com.hierynomus.gradle.license.tasks.LicenseFormat
 | 
					import com.hierynomus.gradle.license.tasks.LicenseFormat
 | 
				
			||||||
import proguard.gradle.ProGuardTask
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
task proguard(type: ProGuardTask, dependsOn: jar) {
 | 
					 | 
				
			||||||
    description "Removes unused shadowed classes from the jar"
 | 
					 | 
				
			||||||
    group "compact"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    injars jar.archivePath
 | 
					 | 
				
			||||||
    outjars "${jar.archivePath.absolutePath.replace(".jar", "")}-min.jar"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Add the main runtime jar and all non-shadowed dependencies
 | 
					 | 
				
			||||||
    libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
 | 
					 | 
				
			||||||
    libraryjars "${System.getProperty('java.home')}/lib/jce.jar"
 | 
					 | 
				
			||||||
    doFirst {
 | 
					 | 
				
			||||||
        sourceSets.main.compileClasspath
 | 
					 | 
				
			||||||
            .filter { !it.name.contains("Cobalt") }
 | 
					 | 
				
			||||||
            .each { libraryjars it }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // We want to avoid as much obfuscation as possible. We're only doing this to shrink code size.
 | 
					 | 
				
			||||||
    dontobfuscate; dontoptimize; keepattributes; keepparameternames
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Proguard will remove directories by default, but that breaks JarMount.
 | 
					 | 
				
			||||||
    keepdirectories 'data/computercraft/lua**'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Preserve ComputerCraft classes - we only want to strip shadowed files.
 | 
					 | 
				
			||||||
    keep 'class dan200.computercraft.** { *; }'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // LWJGL and Apache bundle Java 9 versions, which is great, but rather breaks Proguard
 | 
					 | 
				
			||||||
    dontwarn 'module-info'
 | 
					 | 
				
			||||||
    dontwarn 'org.apache.**,org.lwjgl.**'
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
task proguardMove(dependsOn: proguard) {
 | 
					 | 
				
			||||||
    description "Replace the original jar with the minified version"
 | 
					 | 
				
			||||||
    group "compact"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    doLast {
 | 
					 | 
				
			||||||
        Files.move(
 | 
					 | 
				
			||||||
            file("${jar.archivePath.absolutePath.replace(".jar", "")}-min.jar").toPath(),
 | 
					 | 
				
			||||||
            file(jar.archivePath).toPath(),
 | 
					 | 
				
			||||||
            StandardCopyOption.REPLACE_EXISTING
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
processResources {
 | 
					 | 
				
			||||||
    inputs.property "version", mod_version
 | 
					 | 
				
			||||||
    inputs.property "mcversion", mc_version
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def hash = 'none'
 | 
					 | 
				
			||||||
    Set<String> contributors = []
 | 
					 | 
				
			||||||
    try {
 | 
					 | 
				
			||||||
        hash = ["git", "-C", projectDir, "rev-parse", "HEAD"].execute().text.trim()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        def blacklist = ['GitHub', 'dan200', 'Daniel Ratcliffe']
 | 
					 | 
				
			||||||
        ["git", "-C", projectDir, "log", "--format=tformat:%an%n%cn"].execute().text.split('\n').each {
 | 
					 | 
				
			||||||
            if (!blacklist.contains(it)) contributors.add(it)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    } catch(Exception e) {
 | 
					 | 
				
			||||||
        e.printStackTrace()
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    inputs.property "commithash", hash
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    from(sourceSets.main.resources.srcDirs) {
 | 
					 | 
				
			||||||
        include 'META-INF/mods.toml'
 | 
					 | 
				
			||||||
        include 'data/computercraft/lua/rom/help/credits.txt'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        expand 'version': mod_version,
 | 
					 | 
				
			||||||
               'mcversion': mc_version,
 | 
					 | 
				
			||||||
               'gitcontributors': contributors.sort(false, String.CASE_INSENSITIVE_ORDER).join('\n')
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    from(sourceSets.main.resources.srcDirs) {
 | 
					 | 
				
			||||||
        exclude 'META-INF/mods.toml'
 | 
					 | 
				
			||||||
        exclude 'data/computercraft/lua/rom/help/credits.txt'
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
task compressJson(dependsOn: jar) {
 | 
					 | 
				
			||||||
    group "compact"
 | 
					 | 
				
			||||||
    description "Minifies all JSON files, stripping whitespace"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def jarPath = file(jar.archivePath)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def tempPath = File.createTempFile("input", ".jar", temporaryDir)
 | 
					 | 
				
			||||||
    tempPath.deleteOnExit()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def gson = new GsonBuilder().create()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    doLast {
 | 
					 | 
				
			||||||
        // Copy over all files in the current jar to the new one, running json files from GSON. As pretty printing
 | 
					 | 
				
			||||||
        // is turned off, they should be minified.
 | 
					 | 
				
			||||||
        new ZipFile(jarPath).withCloseable { inJar ->
 | 
					 | 
				
			||||||
            tempPath.getParentFile().mkdirs()
 | 
					 | 
				
			||||||
            new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(tempPath))).withCloseable { outJar ->
 | 
					 | 
				
			||||||
                inJar.entries().each { entry ->
 | 
					 | 
				
			||||||
                    if(entry.directory) {
 | 
					 | 
				
			||||||
                        outJar.putNextEntry(entry)
 | 
					 | 
				
			||||||
                    } else if(!entry.name.endsWith(".json")) {
 | 
					 | 
				
			||||||
                        outJar.putNextEntry(entry)
 | 
					 | 
				
			||||||
                        inJar.getInputStream(entry).withCloseable { outJar << it }
 | 
					 | 
				
			||||||
                    } else {
 | 
					 | 
				
			||||||
                        ZipEntry newEntry = new ZipEntry(entry.name)
 | 
					 | 
				
			||||||
                        newEntry.setTime(entry.time)
 | 
					 | 
				
			||||||
                        outJar.putNextEntry(newEntry)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        def element = inJar.getInputStream(entry).withCloseable { gson.fromJson(it.newReader("UTF8"), JsonElement.class) }
 | 
					 | 
				
			||||||
                        outJar.write(gson.toJson(element).getBytes(StandardCharsets.UTF_8))
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // And replace the original jar again
 | 
					 | 
				
			||||||
        Files.move(tempPath.toPath(), jarPath.toPath(), StandardCopyOption.REPLACE_EXISTING)
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
assemble.dependsOn compressJson
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Web tasks
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import org.apache.tools.ant.taskdefs.condition.Os
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
List<String> mkCommand(String command) {
 | 
					 | 
				
			||||||
    return Os.isFamily(Os.FAMILY_WINDOWS) ? ["cmd", "/c", command] : ["sh", "-c", command]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
task rollup(type: Exec) {
 | 
					 | 
				
			||||||
    group = "build"
 | 
					 | 
				
			||||||
    description = "Bundles JS into rollup"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    inputs.files(fileTree("src/web")).withPropertyName("sources")
 | 
					 | 
				
			||||||
    inputs.file("package-lock.json").withPropertyName("package-lock.json")
 | 
					 | 
				
			||||||
    inputs.file("tsconfig.json").withPropertyName("Typescript config")
 | 
					 | 
				
			||||||
    inputs.file("rollup.config.js").withPropertyName("Rollup config")
 | 
					 | 
				
			||||||
    outputs.file("$buildDir/rollup/index.js").withPropertyName("output")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    commandLine mkCommand('"node_modules/.bin/rollup" --config rollup.config.js')
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
task minifyWeb(type: Exec, dependsOn: rollup) {
 | 
					 | 
				
			||||||
    group = "build"
 | 
					 | 
				
			||||||
    description = "Bundles JS into rollup"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    inputs.file("$buildDir/rollup/index.js").withPropertyName("sources")
 | 
					 | 
				
			||||||
    inputs.file("package-lock.json").withPropertyName("package-lock.json")
 | 
					 | 
				
			||||||
    outputs.file("$buildDir/rollup/index.min.js").withPropertyName("output")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    commandLine mkCommand('"node_modules/.bin/terser"' + " -o '$buildDir/rollup/index.min.js' '$buildDir/rollup/index.js'")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
task illuaminateDocs(type: Exec, dependsOn: [minifyWeb, luaJavadoc]) {
 | 
					 | 
				
			||||||
    group = "build"
 | 
					 | 
				
			||||||
    description = "Bundles JS into rollup"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    inputs.files(fileTree("doc")).withPropertyName("docs")
 | 
					 | 
				
			||||||
    inputs.files(fileTree("src/main/resources/data/computercraft/lua/rom")).withPropertyName("lua rom")
 | 
					 | 
				
			||||||
    inputs.file("illuaminate.sexp").withPropertyName("illuaminate.sexp")
 | 
					 | 
				
			||||||
    inputs.dir("$buildDir/docs/luaJavadoc")
 | 
					 | 
				
			||||||
    inputs.file("$buildDir/rollup/index.min.js").withPropertyName("scripts")
 | 
					 | 
				
			||||||
    inputs.file("src/web/styles.css").withPropertyName("styles")
 | 
					 | 
				
			||||||
    outputs.dir("$buildDir/docs/lua")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    commandLine mkCommand('"bin/illuaminate" doc-gen')
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
task docWebsite(type: Copy, dependsOn: [illuaminateDocs]) {
 | 
					 | 
				
			||||||
    from 'doc/logo.png'
 | 
					 | 
				
			||||||
    into "${project.docsDir}/lua"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Check tasks
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
test {
 | 
					 | 
				
			||||||
    useJUnitPlatform()
 | 
					 | 
				
			||||||
    testLogging {
 | 
					 | 
				
			||||||
        events "skipped", "failed"
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jacocoTestReport {
 | 
					 | 
				
			||||||
    dependsOn('test')
 | 
					 | 
				
			||||||
    reports {
 | 
					 | 
				
			||||||
        xml.enabled true
 | 
					 | 
				
			||||||
        html.enabled true
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
check.dependsOn jacocoTestReport
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
license {
 | 
					license {
 | 
				
			||||||
    mapping("java", "SLASHSTAR_STYLE")
 | 
					    mapping("java", "SLASHSTAR_STYLE")
 | 
				
			||||||
@@ -432,203 +137,23 @@ task licenseFormatAPI(type: LicenseFormat);
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
task setupServer(type: Copy) {
 | 
					// configure the maven publication
 | 
				
			||||||
    group "test server"
 | 
					 | 
				
			||||||
    description "Sets up the environment for the test server."
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    from("src/test/server-files") {
 | 
					 | 
				
			||||||
        include "eula.txt"
 | 
					 | 
				
			||||||
        include "server.properties"
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    into "test-files/server"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
tasks.register('testInGame', JavaExec.class).configure {
 | 
					 | 
				
			||||||
    it.group('test server')
 | 
					 | 
				
			||||||
    it.description("Runs tests on a temporary Minecraft server.")
 | 
					 | 
				
			||||||
    it.dependsOn(setupServer, 'prepareRunTestServer')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Copy from runTestServer. We do it in this slightly odd way as runTestServer
 | 
					 | 
				
			||||||
    // isn't created until the task is configured (which is no good for us).
 | 
					 | 
				
			||||||
    JavaExec exec = tasks.getByName('runTestServer')
 | 
					 | 
				
			||||||
    it.setWorkingDir(exec.getWorkingDir())
 | 
					 | 
				
			||||||
    it.setSystemProperties(exec.getSystemProperties())
 | 
					 | 
				
			||||||
    it.setBootstrapClasspath(exec.getBootstrapClasspath())
 | 
					 | 
				
			||||||
    it.setClasspath(exec.getClasspath())
 | 
					 | 
				
			||||||
    it.setMain(exec.getMain())
 | 
					 | 
				
			||||||
    it.setEnvironment(exec.getEnvironment())
 | 
					 | 
				
			||||||
    it.setArgs(exec.getArgs())
 | 
					 | 
				
			||||||
    it.setJvmArgs(exec.getJvmArgs())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    it.systemProperty('forge.logging.console.level', 'info')
 | 
					 | 
				
			||||||
    it.systemProperty('cctest.run', 'true')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Jacoco and modlauncher don't play well together as the classes loaded in-game don't
 | 
					 | 
				
			||||||
    // match up with those written to disk. We get Jacoco to dump all classes to disk, and
 | 
					 | 
				
			||||||
    // use that when generating the report.
 | 
					 | 
				
			||||||
    def coverageOut = new File(buildDir, 'jacocoClassDump/testInGame')
 | 
					 | 
				
			||||||
    jacoco.applyTo(it)
 | 
					 | 
				
			||||||
    it.jacoco.setIncludes(["dan200.computercraft.*"])
 | 
					 | 
				
			||||||
    it.jacoco.setClassDumpDir(coverageOut)
 | 
					 | 
				
			||||||
    it.outputs.dir(coverageOut)
 | 
					 | 
				
			||||||
    // Older versions of modlauncher don't include a protection domain (and thus no code
 | 
					 | 
				
			||||||
    // source). Jacoco skips such classes by default, so we need to explicitly include them.
 | 
					 | 
				
			||||||
    it.jacoco.setIncludeNoLocationClasses(true)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
tasks.register('jacocoTestInGameReport', JacocoReport.class).configure {
 | 
					 | 
				
			||||||
    it.group('test server')
 | 
					 | 
				
			||||||
    it.description('Generate coverage reports for in-game tests (testInGame)')
 | 
					 | 
				
			||||||
    it.dependsOn('testInGame')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    it.executionData(new File(buildDir, 'jacoco/testInGame.exec'))
 | 
					 | 
				
			||||||
    it.sourceDirectories.from(sourceSets.main.allJava.srcDirs)
 | 
					 | 
				
			||||||
    it.classDirectories.from(new File(buildDir, 'jacocoClassDump/testInGame'))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    it.reports {
 | 
					 | 
				
			||||||
        xml.enabled true
 | 
					 | 
				
			||||||
        html.enabled true
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
check.dependsOn('jacocoTestInGameReport')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Upload tasks
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
task checkRelease {
 | 
					 | 
				
			||||||
    group "upload"
 | 
					 | 
				
			||||||
    description "Verifies that everything is ready for a release"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    inputs.property "version", mod_version
 | 
					 | 
				
			||||||
    inputs.file("src/main/resources/data/computercraft/lua/rom/help/changelog.txt")
 | 
					 | 
				
			||||||
    inputs.file("src/main/resources/data/computercraft/lua/rom/help/whatsnew.txt")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    doLast {
 | 
					 | 
				
			||||||
        def ok = true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Check we're targetting the current version
 | 
					 | 
				
			||||||
        def whatsnew = new File(projectDir, "src/main/resources/data/computercraft/lua/rom/help/whatsnew.txt").readLines()
 | 
					 | 
				
			||||||
        if (whatsnew[0] != "New features in CC: Tweaked $mod_version") {
 | 
					 | 
				
			||||||
            ok = false
 | 
					 | 
				
			||||||
            project.logger.error("Expected `whatsnew.txt' to target $mod_version.")
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Check "read more" exists and trim it
 | 
					 | 
				
			||||||
        def idx = whatsnew.findIndexOf { it == 'Type "help changelog" to see the full version history.' }
 | 
					 | 
				
			||||||
        if (idx == -1) {
 | 
					 | 
				
			||||||
            ok = false
 | 
					 | 
				
			||||||
            project.logger.error("Must mention the changelog in whatsnew.txt")
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            whatsnew = whatsnew.getAt(0 ..< idx)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Check whatsnew and changelog match.
 | 
					 | 
				
			||||||
        def versionChangelog = "# " + whatsnew.join("\n")
 | 
					 | 
				
			||||||
        def changelog = new File(projectDir, "src/main/resources/data/computercraft/lua/rom/help/changelog.txt").getText()
 | 
					 | 
				
			||||||
        if (!changelog.startsWith(versionChangelog)) {
 | 
					 | 
				
			||||||
            ok = false
 | 
					 | 
				
			||||||
            project.logger.error("whatsnew and changelog are not in sync")
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!ok) throw new IllegalStateException("Could not check release")
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
check.dependsOn checkRelease
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
curseforge {
 | 
					 | 
				
			||||||
    apiKey = project.hasProperty('curseForgeApiKey') ? project.curseForgeApiKey : ''
 | 
					 | 
				
			||||||
    project {
 | 
					 | 
				
			||||||
        id = '282001'
 | 
					 | 
				
			||||||
        releaseType = 'release'
 | 
					 | 
				
			||||||
        changelog = "Release notes can be found on the GitHub repository (https://github.com/SquidDev-CC/CC-Tweaked/releases/tag/v${mc_version}-${mod_version})."
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        relations {
 | 
					 | 
				
			||||||
            incompatible "computercraft"
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
publishing {
 | 
					publishing {
 | 
				
			||||||
    publications {
 | 
					    publications {
 | 
				
			||||||
        mavenJava(MavenPublication) {
 | 
					        mavenJava(MavenPublication) {
 | 
				
			||||||
            from components.java
 | 
					            // add all the jars that should be included when publishing to maven
 | 
				
			||||||
            // artifact sourceJar
 | 
					            artifact(remapJar) {
 | 
				
			||||||
        }
 | 
					                builtBy remapJar
 | 
				
			||||||
    }
 | 
					            }
 | 
				
			||||||
}
 | 
					            artifact(sourcesJar) {
 | 
				
			||||||
 | 
					                builtBy remapSourcesJar
 | 
				
			||||||
uploadArchives {
 | 
					 | 
				
			||||||
    repositories {
 | 
					 | 
				
			||||||
        if(project.hasProperty('mavenUploadUrl')) {
 | 
					 | 
				
			||||||
            mavenDeployer {
 | 
					 | 
				
			||||||
                configuration = configurations.deployerJars
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                repository(url: project.property('mavenUploadUrl')) {
 | 
					 | 
				
			||||||
                    authentication(
 | 
					 | 
				
			||||||
                        userName: project.property('mavenUploadUser'),
 | 
					 | 
				
			||||||
                        privateKey: project.property('mavenUploadKey'))
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                pom.project {
 | 
					 | 
				
			||||||
                    name 'CC: Tweaked'
 | 
					 | 
				
			||||||
                    packaging 'jar'
 | 
					 | 
				
			||||||
                    description 'CC: Tweaked is a fork of ComputerCraft, adding programmable computers, turtles and more to Minecraft.'
 | 
					 | 
				
			||||||
                    url 'https://github.com/SquidDev-CC/CC-Tweaked'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    scm {
 | 
					 | 
				
			||||||
                        url 'https://github.com/SquidDev-CC/CC-Tweaked.git'
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    issueManagement {
 | 
					 | 
				
			||||||
                        system 'github'
 | 
					 | 
				
			||||||
                        url 'https://github.com/SquidDev-CC/CC-Tweaked/issues'
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    licenses {
 | 
					 | 
				
			||||||
                        license {
 | 
					 | 
				
			||||||
                            name 'ComputerCraft Public License, Version 1.0'
 | 
					 | 
				
			||||||
                            url 'https://github.com/SquidDev-CC/CC-Tweaked/blob/master/LICENSE'
 | 
					 | 
				
			||||||
                            distribution 'repo'
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                pom.whenConfigured { pom ->
 | 
					 | 
				
			||||||
                    pom.dependencies.clear()
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					
 | 
				
			||||||
 | 
					    // select the repositories you want to publish to
 | 
				
			||||||
githubRelease {
 | 
					    repositories {
 | 
				
			||||||
    token project.hasProperty('githubApiKey') ? project.githubApiKey : ''
 | 
					        // uncomment to publish to the local maven
 | 
				
			||||||
    owner 'SquidDev-CC'
 | 
					        // mavenLocal()
 | 
				
			||||||
    repo 'CC-Tweaked'
 | 
					    }
 | 
				
			||||||
    targetCommitish.set(project.provider({
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            return ["git", "-C", projectDir, "rev-parse", "--abbrev-ref", "HEAD"].execute().text.trim()
 | 
					 | 
				
			||||||
        } catch (Exception e) {
 | 
					 | 
				
			||||||
            e.printStackTrace()
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return "master"
 | 
					 | 
				
			||||||
    }))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    tagName "v${mc_version}-${mod_version}"
 | 
					 | 
				
			||||||
    releaseName "[${mc_version}] ${mod_version}"
 | 
					 | 
				
			||||||
    body.set(project.provider({
 | 
					 | 
				
			||||||
        "## " + new File(projectDir, "src/main/resources/data/computercraft/lua/rom/help/whatsnew.txt")
 | 
					 | 
				
			||||||
            .readLines()
 | 
					 | 
				
			||||||
            .takeWhile { it != 'Type "help changelog" to see the full version history.' }
 | 
					 | 
				
			||||||
            .join("\n").trim()
 | 
					 | 
				
			||||||
    }))
 | 
					 | 
				
			||||||
    prerelease false
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def uploadTasks = ["uploadArchives", "curseforge", "githubRelease"]
 | 
					 | 
				
			||||||
uploadTasks.forEach { tasks.getByName(it).dependsOn checkRelease }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
task uploadAll(dependsOn: uploadTasks) {
 | 
					 | 
				
			||||||
    group "upload"
 | 
					 | 
				
			||||||
    description "Uploads to all repositories (Maven, Curse, GitHub release)"
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2491
									
								
								codeInspectionSettings.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2491
									
								
								codeInspectionSettings.xml
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										61
									
								
								codeStyleSettings.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								codeStyleSettings.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
				
			|||||||
 | 
					<code_scheme name="Project" version="173">
 | 
				
			||||||
 | 
					  <JSON>
 | 
				
			||||||
 | 
					    <option name="OBJECT_WRAPPING" value="1" />
 | 
				
			||||||
 | 
					    <option name="ARRAY_WRAPPING" value="1" />
 | 
				
			||||||
 | 
					  </JSON>
 | 
				
			||||||
 | 
					  <JavaCodeStyleSettings>
 | 
				
			||||||
 | 
					    <option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
 | 
				
			||||||
 | 
					      <value />
 | 
				
			||||||
 | 
					    </option>
 | 
				
			||||||
 | 
					    <option name="JD_P_AT_EMPTY_LINES" value="false" />
 | 
				
			||||||
 | 
					    <option name="JD_PRESERVE_LINE_FEEDS" value="true" />
 | 
				
			||||||
 | 
					  </JavaCodeStyleSettings>
 | 
				
			||||||
 | 
					  <codeStyleSettings language="JAVA">
 | 
				
			||||||
 | 
					    <option name="KEEP_FIRST_COLUMN_COMMENT" value="false" />
 | 
				
			||||||
 | 
					    <option name="BRACE_STYLE" value="2" />
 | 
				
			||||||
 | 
					    <option name="CLASS_BRACE_STYLE" value="2" />
 | 
				
			||||||
 | 
					    <option name="METHOD_BRACE_STYLE" value="2" />
 | 
				
			||||||
 | 
					    <option name="LAMBDA_BRACE_STYLE" value="5" />
 | 
				
			||||||
 | 
					    <option name="ELSE_ON_NEW_LINE" value="true" />
 | 
				
			||||||
 | 
					    <option name="CATCH_ON_NEW_LINE" value="true" />
 | 
				
			||||||
 | 
					    <option name="FINALLY_ON_NEW_LINE" value="true" />
 | 
				
			||||||
 | 
					    <option name="SPACE_WITHIN_METHOD_CALL_PARENTHESES" value="true" />
 | 
				
			||||||
 | 
					    <option name="SPACE_WITHIN_METHOD_PARENTHESES" value="true" />
 | 
				
			||||||
 | 
					    <option name="SPACE_WITHIN_IF_PARENTHESES" value="true" />
 | 
				
			||||||
 | 
					    <option name="SPACE_WITHIN_WHILE_PARENTHESES" value="true" />
 | 
				
			||||||
 | 
					    <option name="SPACE_WITHIN_FOR_PARENTHESES" value="true" />
 | 
				
			||||||
 | 
					    <option name="SPACE_WITHIN_TRY_PARENTHESES" value="true" />
 | 
				
			||||||
 | 
					    <option name="SPACE_WITHIN_CATCH_PARENTHESES" value="true" />
 | 
				
			||||||
 | 
					    <option name="SPACE_WITHIN_SWITCH_PARENTHESES" value="true" />
 | 
				
			||||||
 | 
					    <option name="SPACE_WITHIN_SYNCHRONIZED_PARENTHESES" value="true" />
 | 
				
			||||||
 | 
					    <option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACES" value="true" />
 | 
				
			||||||
 | 
					    <option name="SPACE_BEFORE_IF_PARENTHESES" value="false" />
 | 
				
			||||||
 | 
					    <option name="SPACE_BEFORE_WHILE_PARENTHESES" value="false" />
 | 
				
			||||||
 | 
					    <option name="SPACE_BEFORE_FOR_PARENTHESES" value="false" />
 | 
				
			||||||
 | 
					    <option name="SPACE_BEFORE_TRY_PARENTHESES" value="false" />
 | 
				
			||||||
 | 
					    <option name="SPACE_BEFORE_CATCH_PARENTHESES" value="false" />
 | 
				
			||||||
 | 
					    <option name="SPACE_BEFORE_SWITCH_PARENTHESES" value="false" />
 | 
				
			||||||
 | 
					    <option name="SPACE_BEFORE_SYNCHRONIZED_PARENTHESES" value="false" />
 | 
				
			||||||
 | 
					    <option name="SPACE_BEFORE_ARRAY_INITIALIZER_LBRACE" value="true" />
 | 
				
			||||||
 | 
					    <option name="KEEP_SIMPLE_METHODS_IN_ONE_LINE" value="true" />
 | 
				
			||||||
 | 
					    <option name="KEEP_SIMPLE_LAMBDAS_IN_ONE_LINE" value="true" />
 | 
				
			||||||
 | 
					    <option name="KEEP_SIMPLE_CLASSES_IN_ONE_LINE" value="true" />
 | 
				
			||||||
 | 
					    <option name="IF_BRACE_FORCE" value="1" />
 | 
				
			||||||
 | 
					    <option name="DOWHILE_BRACE_FORCE" value="1" />
 | 
				
			||||||
 | 
					    <option name="WHILE_BRACE_FORCE" value="1" />
 | 
				
			||||||
 | 
					    <option name="FOR_BRACE_FORCE" value="1" />
 | 
				
			||||||
 | 
					    <option name="SPACE_WITHIN_ANNOTATION_PARENTHESES" value="true" />
 | 
				
			||||||
 | 
					    <indentOptions>
 | 
				
			||||||
 | 
					      <option name="CONTINUATION_INDENT_SIZE" value="4" />
 | 
				
			||||||
 | 
					    </indentOptions>
 | 
				
			||||||
 | 
					  </codeStyleSettings>
 | 
				
			||||||
 | 
					  <codeStyleSettings language="JSON">
 | 
				
			||||||
 | 
					    <option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
 | 
				
			||||||
 | 
					    <option name="SPACE_WITHIN_BRACKETS" value="true" />
 | 
				
			||||||
 | 
					    <option name="SPACE_WITHIN_BRACES" value="true" />
 | 
				
			||||||
 | 
					    <indentOptions>
 | 
				
			||||||
 | 
					      <option name="INDENT_SIZE" value="4" />
 | 
				
			||||||
 | 
					      <option name="CONTINUATION_INDENT_SIZE" value="4" />
 | 
				
			||||||
 | 
					    </indentOptions>
 | 
				
			||||||
 | 
					  </codeStyleSettings>
 | 
				
			||||||
 | 
					</code_scheme>
 | 
				
			||||||
@@ -58,13 +58,13 @@
 | 
				
			|||||||
        <module name="SimplifyBooleanExpression" />
 | 
					        <module name="SimplifyBooleanExpression" />
 | 
				
			||||||
        <module name="SimplifyBooleanReturn" />
 | 
					        <module name="SimplifyBooleanReturn" />
 | 
				
			||||||
        <module name="StringLiteralEquality" />
 | 
					        <module name="StringLiteralEquality" />
 | 
				
			||||||
        <module name="UnnecessaryParentheses" />
 | 
					        <!-- <module name="UnnecessaryParentheses" /> -->
 | 
				
			||||||
        <module name="UnnecessarySemicolonAfterTypeMemberDeclaration" />
 | 
					        <module name="UnnecessarySemicolonAfterTypeMemberDeclaration" />
 | 
				
			||||||
        <module name="UnnecessarySemicolonInTryWithResources" />
 | 
					        <module name="UnnecessarySemicolonInTryWithResources" />
 | 
				
			||||||
        <module name="UnnecessarySemicolonInEnumeration" />
 | 
					        <module name="UnnecessarySemicolonInEnumeration" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <!-- Imports -->
 | 
					        <!-- Imports -->
 | 
				
			||||||
        <module name="CustomImportOrder" />
 | 
					        <!--<module name="CustomImportOrder" />-->
 | 
				
			||||||
        <module name="IllegalImport" />
 | 
					        <module name="IllegalImport" />
 | 
				
			||||||
        <module name="RedundantImport" />
 | 
					        <module name="RedundantImport" />
 | 
				
			||||||
        <module name="UnusedImports" />
 | 
					        <module name="UnusedImports" />
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,8 +7,8 @@
 | 
				
			|||||||
    <suppress checks="StaticVariableName" files=".*[\\/]ComputerCraft.java" />
 | 
					    <suppress checks="StaticVariableName" files=".*[\\/]ComputerCraft.java" />
 | 
				
			||||||
    <suppress checks="StaticVariableName" files=".*[\\/]ComputerCraftAPI.java" />
 | 
					    <suppress checks="StaticVariableName" files=".*[\\/]ComputerCraftAPI.java" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- Do not check for missing package Javadoc. -->
 | 
					    <!-- Some shadowed fields in mixins can't be renamed -->
 | 
				
			||||||
    <suppress checks="JavadocStyle" files=".*[\\/]package-info.java" />
 | 
					    <suppress checks="StaticVariableName" files=".*[\\/]mixin[\\/].*" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- The commands API is documented in Lua. -->
 | 
					    <!-- The commands API is documented in Lua. -->
 | 
				
			||||||
    <suppress checks="SummaryJavadocCheck" files=".*[\\/]CommandAPI.java" />
 | 
					    <suppress checks="SummaryJavadocCheck" files=".*[\\/]CommandAPI.java" />
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2488,4 +2488,4 @@
 | 
				
			|||||||
      </option>
 | 
					      </option>
 | 
				
			||||||
    </inspection_tool>
 | 
					    </inspection_tool>
 | 
				
			||||||
  </profile>
 | 
					  </profile>
 | 
				
			||||||
</component>
 | 
					</component>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,4 +58,4 @@
 | 
				
			|||||||
      <option name="CONTINUATION_INDENT_SIZE" value="4" />
 | 
					      <option name="CONTINUATION_INDENT_SIZE" value="4" />
 | 
				
			||||||
    </indentOptions>
 | 
					    </indentOptions>
 | 
				
			||||||
  </codeStyleSettings>
 | 
					  </codeStyleSettings>
 | 
				
			||||||
</code_scheme>
 | 
					</code_scheme>
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										49
									
								
								config/pre-commit/config.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								config/pre-commit/config.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					# See https://pre-commit.com for more information
 | 
				
			||||||
 | 
					# See https://pre-commit.com/hooks.html for more hooks
 | 
				
			||||||
 | 
					repos:
 | 
				
			||||||
 | 
					- repo: https://github.com/pre-commit/pre-commit-hooks
 | 
				
			||||||
 | 
					  rev: v3.2.0
 | 
				
			||||||
 | 
					  hooks:
 | 
				
			||||||
 | 
					  - id: trailing-whitespace
 | 
				
			||||||
 | 
					  - id: end-of-file-fixer
 | 
				
			||||||
 | 
					  - id: check-merge-conflict
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Quick syntax checkers
 | 
				
			||||||
 | 
					  - id: check-xml
 | 
				
			||||||
 | 
					  - id: check-yaml
 | 
				
			||||||
 | 
					  - id: check-toml
 | 
				
			||||||
 | 
					  - id: check-json
 | 
				
			||||||
 | 
					    exclude: "tsconfig\\.json$"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- repo: https://github.com/editorconfig-checker/editorconfig-checker.python
 | 
				
			||||||
 | 
					  rev: 2.3.5
 | 
				
			||||||
 | 
					  hooks:
 | 
				
			||||||
 | 
					  - id: editorconfig-checker
 | 
				
			||||||
 | 
					    args: ['-disable-indentation']
 | 
				
			||||||
 | 
					    exclude: "^(.*\\.(bat)|LICENSE)$"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- repo: local
 | 
				
			||||||
 | 
					  hooks:
 | 
				
			||||||
 | 
					  - id: checkstyle
 | 
				
			||||||
 | 
					    name: Check Java codestyle
 | 
				
			||||||
 | 
					    files: ".*\\.java$"
 | 
				
			||||||
 | 
					    language: system
 | 
				
			||||||
 | 
					    entry: ./gradlew checkstyleMain checkstyleTest
 | 
				
			||||||
 | 
					    pass_filenames: false
 | 
				
			||||||
 | 
					    require_serial: true
 | 
				
			||||||
 | 
					  - id: license
 | 
				
			||||||
 | 
					    name: Check Java license headers
 | 
				
			||||||
 | 
					    files: ".*\\.java$"
 | 
				
			||||||
 | 
					    language: system
 | 
				
			||||||
 | 
					    entry: ./gradlew licenseFormat
 | 
				
			||||||
 | 
					    pass_filenames: false
 | 
				
			||||||
 | 
					    require_serial: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exclude: |
 | 
				
			||||||
 | 
					  (?x)^(
 | 
				
			||||||
 | 
					    src/generated|
 | 
				
			||||||
 | 
					    src/test/resources/test-rom/data/json-parsing/|
 | 
				
			||||||
 | 
					    src/test/server-files/|
 | 
				
			||||||
 | 
					    config/idea/|
 | 
				
			||||||
 | 
					    .vscode/
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
							
								
								
									
										16
									
								
								config/pre-commit/illuaminate-lint.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										16
									
								
								config/pre-commit/illuaminate-lint.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env sh
 | 
				
			||||||
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					test -d bin || mkdir bin
 | 
				
			||||||
 | 
					test -f bin/illuaminate || curl -s -obin/illuaminate https://squiddev.cc/illuaminate/linux-x86-64/illuaminate
 | 
				
			||||||
 | 
					chmod +x bin/illuaminate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -n ${GITHUB_ACTIONS+x} ]; then
 | 
				
			||||||
 | 
					    # Register a problem matcher (see https://github.com/actions/toolkit/blob/master/docs/problem-matchers.md)
 | 
				
			||||||
 | 
					    # for illuaminate.
 | 
				
			||||||
 | 
					    echo "::add-matcher::.github/matchers/illuaminate.json"
 | 
				
			||||||
 | 
					    trap 'echo "::remove-matcher owner=illuaminate::"' EXIT
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					./gradlew luaJavadoc
 | 
				
			||||||
 | 
					bin/illuaminate lint
 | 
				
			||||||
@@ -1,21 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] alarm
 | 
					 | 
				
			||||||
see: os.setAlarm To start an alarm.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{timer} event is fired when an alarm started with @{os.setAlarm} completes.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{number}: The ID of the alarm that finished.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Starts a timer and then prints its ID:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
local alarmID = os.setAlarm(os.time() + 0.05)
 | 
					 | 
				
			||||||
local event, id
 | 
					 | 
				
			||||||
repeat
 | 
					 | 
				
			||||||
    event, id = os.pullEvent("alarm")
 | 
					 | 
				
			||||||
until id == alarmID
 | 
					 | 
				
			||||||
print("Alarm with ID " .. id .. " was fired")
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,24 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] char
 | 
					 | 
				
			||||||
see: key To listen to any key press.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{char} event is fired when a character is _typed_ on the keyboard.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{char} event is different to a key press. Sometimes multiple key presses may result in one character being
 | 
					 | 
				
			||||||
typed (for instance, on some European keyboards). Similarly, some keys (e.g. <kbd>Ctrl</kbd>) do not have any
 | 
					 | 
				
			||||||
corresponding character. The @{key} should be used if you want to listen to key presses themselves.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{string}: The string representing the character that was pressed.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints each character the user presses:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event, character = os.pullEvent("char")
 | 
					 | 
				
			||||||
  print(character .. " was pressed.")
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,18 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] computer_command
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{computer_command} event is fired when the `/computercraft queue` command is run for the current computer.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
... @{string}: The arguments passed to the command.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints the contents of messages sent:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event = {os.pullEvent("computer_command")}
 | 
					 | 
				
			||||||
  print("Received message:", table.unpack(event, 2))
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,19 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] disk
 | 
					 | 
				
			||||||
see: disk_eject For the event sent when a disk is removed.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{disk} event is fired when a disk is inserted into an adjacent or networked disk drive.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{string}: The side of the disk drive that had a disk inserted.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints a message when a disk is inserted:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event, side = os.pullEvent("disk")
 | 
					 | 
				
			||||||
  print("Inserted a disk on side " .. side)
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,19 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] disk_eject
 | 
					 | 
				
			||||||
see: disk For the event sent when a disk is inserted.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{disk_eject} event is fired when a disk is removed from an adjacent or networked disk drive.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{string}: The side of the disk drive that had a disk removed.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints a message when a disk is removed:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event, side = os.pullEvent("disk_eject")
 | 
					 | 
				
			||||||
  print("Removed a disk on side " .. side)
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,14 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] http_check
 | 
					 | 
				
			||||||
see: http.checkURLAsync To check a URL asynchronously.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{http_check} event is fired when a URL check finishes.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This event is normally handled inside @{http.checkURL}, but it can still be seen when using @{http.checkURLAsync}.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{string}: The URL requested to be checked.
 | 
					 | 
				
			||||||
3. @{boolean}: Whether the check succeeded.
 | 
					 | 
				
			||||||
4. @{string|nil}: If the check failed, a reason explaining why the check failed.
 | 
					 | 
				
			||||||
@@ -1,39 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] http_failure
 | 
					 | 
				
			||||||
see: http.request To send an HTTP request.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{http_failure} event is fired when an HTTP request fails.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This event is normally handled inside @{http.get} and @{http.post}, but it can still be seen when using @{http.request}.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{string}: The URL of the site requested.
 | 
					 | 
				
			||||||
3. @{string}: An error describing the failure.
 | 
					 | 
				
			||||||
4. @{http.Response|nil}: A response handle if the connection succeeded, but the server's response indicated failure.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints an error why the website cannot be contacted:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
local myURL = "https://does.not.exist.tweaked.cc"
 | 
					 | 
				
			||||||
http.request(myURL)
 | 
					 | 
				
			||||||
local event, url, err
 | 
					 | 
				
			||||||
repeat
 | 
					 | 
				
			||||||
    event, url, err = os.pullEvent("http_failure")
 | 
					 | 
				
			||||||
until url == myURL
 | 
					 | 
				
			||||||
print("The URL " .. url .. " could not be reached: " .. err)
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Prints the contents of a webpage that does not exist:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
local myURL = "https://tweaked.cc/this/does/not/exist"
 | 
					 | 
				
			||||||
http.request(myURL)
 | 
					 | 
				
			||||||
local event, url, err, handle
 | 
					 | 
				
			||||||
repeat
 | 
					 | 
				
			||||||
    event, url, err, handle = os.pullEvent("http_failure")
 | 
					 | 
				
			||||||
until url == myURL
 | 
					 | 
				
			||||||
print("The URL " .. url .. " could not be reached: " .. err)
 | 
					 | 
				
			||||||
print(handle.getResponseCode())
 | 
					 | 
				
			||||||
handle.close()
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,27 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] http_success
 | 
					 | 
				
			||||||
see: http.request To make an HTTP request.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{http_success} event is fired when an HTTP request returns successfully.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This event is normally handled inside @{http.get} and @{http.post}, but it can still be seen when using @{http.request}.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{string}: The URL of the site requested.
 | 
					 | 
				
			||||||
3. @{http.Response}: The handle for the response text.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints the content of a website (this may fail if the request fails):
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
local myURL = "https://tweaked.cc/"
 | 
					 | 
				
			||||||
http.request(myURL)
 | 
					 | 
				
			||||||
local event, url, handle
 | 
					 | 
				
			||||||
repeat
 | 
					 | 
				
			||||||
    event, url, handle = os.pullEvent("http_success")
 | 
					 | 
				
			||||||
until url == myURL
 | 
					 | 
				
			||||||
print("Contents of " .. url .. ":")
 | 
					 | 
				
			||||||
print(handle.readAll())
 | 
					 | 
				
			||||||
handle.close()
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,26 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] key
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This event is fired when any key is pressed while the terminal is focused.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This event returns a numerical "key code" (for instance, <kbd>F1</kbd> is 290). This value may vary between versions and
 | 
					 | 
				
			||||||
so it is recommended to use the constants in the @{keys} API rather than hard coding numeric values.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
If the button pressed represented a printable character, then the @{key} event will be followed immediately by a @{char}
 | 
					 | 
				
			||||||
event. If you are consuming text input, use a @{char} event instead!
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{number}: The numerical key value of the key pressed.
 | 
					 | 
				
			||||||
3. @{boolean}: Whether the key event was generated while holding the key (@{true}), rather than pressing it the first time (@{false}).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints each key when the user presses it, and if the key is being held.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event, key, is_held = os.pullEvent("key")  
 | 
					 | 
				
			||||||
  print(("%s held=%s"):format(keys.getName(key), is_held))
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,24 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] key_up
 | 
					 | 
				
			||||||
see: keys For a lookup table of the given keys.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Fired whenever a key is released (or the terminal is closed while a key was being pressed).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This event returns a numerical "key code" (for instance, <kbd>F1</kbd> is 290). This value may vary between versions and
 | 
					 | 
				
			||||||
so it is recommended to use the constants in the @{keys} API rather than hard coding numeric values.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{number}: The numerical key value of the key pressed.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints each key released on the keyboard whenever a @{key_up} event is fired.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event, key = os.pullEvent("key_up")
 | 
					 | 
				
			||||||
  local name = keys.getName(key) or "unknown key"
 | 
					 | 
				
			||||||
  print(name .. " was released.")
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,22 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] modem_message
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{modem_message} event is fired when a message is received on an open channel on any modem.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{string}: The side of the modem that received the message.
 | 
					 | 
				
			||||||
3. @{number}: The channel that the message was sent on.
 | 
					 | 
				
			||||||
4. @{number}: The reply channel set by the sender.
 | 
					 | 
				
			||||||
5. @{any}: The message as sent by the sender.
 | 
					 | 
				
			||||||
6. @{number}: The distance between the sender and the receiver, in blocks (decimal).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints a message when one is sent:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event, side, channel, replyChannel, message, distance = os.pullEvent("modem_message")
 | 
					 | 
				
			||||||
  print(("Message received on side %s on channel %d (reply to %d) from %f blocks away with message %s"):format(side, channel, replyChannel, distance, tostring(message)))
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,18 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] monitor_resize
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{monitor_resize} event is fired when an adjacent or networked monitor's size is changed.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{string}: The side or network ID of the monitor that resized.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints a message when a monitor is resized:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event, side = os.pullEvent("monitor_resize")
 | 
					 | 
				
			||||||
  print("The monitor on side " .. side .. " was resized.")
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,20 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] monitor_touch
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{monitor_touch} event is fired when an adjacent or networked Advanced Monitor is right-clicked.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{string}: The side or network ID of the monitor that was touched.
 | 
					 | 
				
			||||||
3. @{number}: The X coordinate of the touch, in characters.
 | 
					 | 
				
			||||||
4. @{number}: The Y coordinate of the touch, in characters.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints a message when a monitor is touched:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event, side, x, y = os.pullEvent("monitor_touch")
 | 
					 | 
				
			||||||
  print("The monitor on side " .. side .. " was touched at (" .. x .. ", " .. y .. ")")
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,34 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] mouse_click
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This event is fired when the terminal is clicked with a mouse. This event is only fired on advanced computers (including
 | 
					 | 
				
			||||||
advanced turtles and pocket computers).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{number}: The mouse button that was clicked.
 | 
					 | 
				
			||||||
3. @{number}: The X-coordinate of the click.
 | 
					 | 
				
			||||||
4. @{number}: The Y-coordinate of the click.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Mouse buttons
 | 
					 | 
				
			||||||
Several mouse events (@{mouse_click}, @{mouse_up}, @{mouse_scroll}) contain a "mouse button" code. This takes a
 | 
					 | 
				
			||||||
numerical value depending on which button on your mouse was last pressed when this event occurred.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<table class="pretty-table">
 | 
					 | 
				
			||||||
    <!-- Our markdown parser doesn't work on tables!? Guess I'll have to roll my own soonish :/. -->
 | 
					 | 
				
			||||||
    <tr><th>Button code</th><th>Mouse button</th></tr>
 | 
					 | 
				
			||||||
    <tr><td align="right">1</td><td>Left button</td></tr>
 | 
					 | 
				
			||||||
    <tr><td align="right">2</td><td>Middle button</td></tr>
 | 
					 | 
				
			||||||
    <tr><td align="right">3</td><td>Right button</td></tr>
 | 
					 | 
				
			||||||
</table>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Print the button and the coordinates whenever the mouse is clicked.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event, button, x, y = os.pullEvent("mouse_click")
 | 
					 | 
				
			||||||
  print(("The mouse button %s was pressed at %d, %d"):format(button, x, y))
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,22 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] mouse_drag
 | 
					 | 
				
			||||||
see: mouse_click For when a mouse button is initially pressed.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This event is fired every time the mouse is moved while a mouse button is being held.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{number}: The [mouse button](mouse_click.html#Mouse_buttons) that is being pressed.
 | 
					 | 
				
			||||||
3. @{number}: The X-coordinate of the mouse.
 | 
					 | 
				
			||||||
4. @{number}: The Y-coordinate of the mouse.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Print the button and the coordinates whenever the mouse is dragged.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event, button, x, y = os.pullEvent("mouse_drag")
 | 
					 | 
				
			||||||
  print(("The mouse button %s was dragged at %d, %d"):format(button, x, y))
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,21 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] mouse_scroll
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This event is fired when a mouse wheel is scrolled in the terminal.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{number}: The direction of the scroll. (-1 = up, 1 = down)
 | 
					 | 
				
			||||||
3. @{number}: The X-coordinate of the mouse when scrolling.
 | 
					 | 
				
			||||||
4. @{number}: The Y-coordinate of the mouse when scrolling.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints the direction of each scroll, and the position of the mouse at the time.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event, dir, x, y = os.pullEvent("mouse_scroll")
 | 
					 | 
				
			||||||
  print(("The mouse was scrolled in direction %s at %d, %d"):format(dir, x, y))
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,21 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] mouse_up
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This event is fired when a mouse button is released or a held mouse leaves the computer's terminal.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{number}: The [mouse button](mouse_click.html#Mouse_buttons) that was released.
 | 
					 | 
				
			||||||
3. @{number}: The X-coordinate of the mouse.
 | 
					 | 
				
			||||||
4. @{number}: The Y-coordinate of the mouse.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints the coordinates and button number whenever the mouse is released.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event, button, x, y = os.pullEvent("mouse_up")
 | 
					 | 
				
			||||||
  print(("The mouse button %s was released at %d, %d"):format(button, x, y))
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,18 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] paste
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{paste} event is fired when text is pasted into the computer through Ctrl-V (or ⌘V on Mac).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{string} The text that was pasted.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints pasted text:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event, text = os.pullEvent("paste")
 | 
					 | 
				
			||||||
  print('"' .. text .. '" was pasted')
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,19 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] peripheral
 | 
					 | 
				
			||||||
see: peripheral_detach For the event fired when a peripheral is detached.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{peripheral} event is fired when a peripheral is attached on a side or to a modem.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{string}: The side the peripheral was attached to.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints a message when a peripheral is attached:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event, side = os.pullEvent("peripheral")
 | 
					 | 
				
			||||||
  print("A peripheral was attached on side " .. side)
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,19 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] peripheral_detach
 | 
					 | 
				
			||||||
see: peripheral For the event fired when a peripheral is attached.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{peripheral_detach} event is fired when a peripheral is detached from a side or from a modem.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{string}: The side the peripheral was detached from.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints a message when a peripheral is detached:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event, side = os.pullEvent("peripheral_detach")
 | 
					 | 
				
			||||||
  print("A peripheral was detached on side " .. side)
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,30 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] rednet_message
 | 
					 | 
				
			||||||
see: modem_message For raw modem messages sent outside of Rednet.
 | 
					 | 
				
			||||||
see: rednet.receive To wait for a Rednet message with an optional timeout and protocol filter.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{rednet_message} event is fired when a message is sent over Rednet.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This event is usually handled by @{rednet.receive}, but it can also be pulled manually.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@{rednet_message} events are sent by @{rednet.run} in the top-level coroutine in response to @{modem_message} events. A @{rednet_message} event is always preceded by a @{modem_message} event. They are generated inside CraftOS rather than being sent by the ComputerCraft machine.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{number}: The ID of the sending computer.
 | 
					 | 
				
			||||||
3. @{any}: The message sent.
 | 
					 | 
				
			||||||
4. @{string|nil}: The protocol of the message, if provided.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints a message when one is sent:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event, sender, message, protocol = os.pullEvent("rednet_message")
 | 
					 | 
				
			||||||
  if protocol ~= nil then
 | 
					 | 
				
			||||||
    print("Received message from " .. sender .. " with protocol " .. protocol .. " and message " .. tostring(message))
 | 
					 | 
				
			||||||
  else
 | 
					 | 
				
			||||||
    print("Received message from " .. sender .. " with message " .. tostring(message))
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,14 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] redstone
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{redstone} event is fired whenever any redstone inputs on the computer change.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints a message when a redstone input changes:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  os.pullEvent("redstone")
 | 
					 | 
				
			||||||
  print("A redstone input has changed!")
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,28 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] task_complete
 | 
					 | 
				
			||||||
see: commands.execAsync To run a command which fires a task_complete event.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{task_complete} event is fired when an asynchronous task completes. This is usually handled inside the function call that queued the task; however, functions such as @{commands.execAsync} return immediately so the user can wait for completion.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{number}: The ID of the task that completed.
 | 
					 | 
				
			||||||
3. @{boolean}: Whether the command succeeded.
 | 
					 | 
				
			||||||
4. @{string}: If the command failed, an error message explaining the failure. (This is not present if the command succeeded.)
 | 
					 | 
				
			||||||
...: Any parameters returned from the command.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints the results of an asynchronous command:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
local taskID = commands.execAsync("say Hello")
 | 
					 | 
				
			||||||
local event
 | 
					 | 
				
			||||||
repeat
 | 
					 | 
				
			||||||
    event = {os.pullEvent("task_complete")}
 | 
					 | 
				
			||||||
until event[2] == taskID
 | 
					 | 
				
			||||||
if event[3] == true then
 | 
					 | 
				
			||||||
  print("Task " .. event[2] .. " succeeded:", table.unpack(event, 4))
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
  print("Task " .. event[2] .. " failed: " .. event[4])
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,15 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] term_resize
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{term_resize} event is fired when the main terminal is resized, mainly when a new tab is opened or closed in @{multishell}.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints :
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  os.pullEvent("term_resize")
 | 
					 | 
				
			||||||
  local w, h = term.getSize()
 | 
					 | 
				
			||||||
  print("The term was resized to (" .. w .. ", " .. h .. ")")
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,25 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] terminate
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{terminate} event is fired when <kbd>Ctrl-T</kbd> is held down.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This event is normally handled by @{os.pullEvent}, and will not be returned. However, @{os.pullEventRaw} will return this event when fired.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@{terminate} will be sent even when a filter is provided to @{os.pullEventRaw}. When using @{os.pullEventRaw} with a filter, make sure to check that the event is not @{terminate}.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints a message when Ctrl-T is held:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  local event = os.pullEventRaw("terminate")
 | 
					 | 
				
			||||||
  if event == "terminate" then print("Terminate requested!") end
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Exits when Ctrl-T is held:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  os.pullEvent()
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,21 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] timer
 | 
					 | 
				
			||||||
see: os.startTimer To start a timer.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{timer} event is fired when a timer started with @{os.startTimer} completes.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{number}: The ID of the timer that finished.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Starts a timer and then prints its ID:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
local timerID = os.startTimer(2)
 | 
					 | 
				
			||||||
local event, id
 | 
					 | 
				
			||||||
repeat
 | 
					 | 
				
			||||||
    event, id = os.pullEvent("timer")
 | 
					 | 
				
			||||||
until id == timerID
 | 
					 | 
				
			||||||
print("Timer with ID " .. id .. " was fired")
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,14 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] turtle_inventory
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{turtle_inventory} event is fired when a turtle's inventory is changed.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints a message when the inventory is changed:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
while true do
 | 
					 | 
				
			||||||
  os.pullEvent("turtle_inventory")
 | 
					 | 
				
			||||||
  print("The inventory was changed.")
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,21 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] websocket_closed
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{websocket_closed} event is fired when an open WebSocket connection is closed.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{string}: The URL of the WebSocket that was closed.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints a message when a WebSocket is closed (this may take a minute):
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
local myURL = "wss://example.tweaked.cc/echo"
 | 
					 | 
				
			||||||
local ws = http.websocket(myURL)
 | 
					 | 
				
			||||||
local event, url
 | 
					 | 
				
			||||||
repeat
 | 
					 | 
				
			||||||
    event, url = os.pullEvent("websocket_closed")
 | 
					 | 
				
			||||||
until url == myURL
 | 
					 | 
				
			||||||
print("The WebSocket at " .. url .. " was closed.")
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,25 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] websocket_failure
 | 
					 | 
				
			||||||
see: http.websocketAsync To send an HTTP request.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{websocket_failure} event is fired when a WebSocket connection request fails.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This event is normally handled inside @{http.websocket}, but it can still be seen when using @{http.websocketAsync}.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{string}: The URL of the site requested.
 | 
					 | 
				
			||||||
3. @{string}: An error describing the failure.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints an error why the website cannot be contacted:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
local myURL = "wss://example.tweaked.cc/not-a-websocket"
 | 
					 | 
				
			||||||
http.websocketAsync(myURL)
 | 
					 | 
				
			||||||
local event, url, err
 | 
					 | 
				
			||||||
repeat
 | 
					 | 
				
			||||||
    event, url, err = os.pullEvent("websocket_failure")
 | 
					 | 
				
			||||||
until url == myURL
 | 
					 | 
				
			||||||
print("The URL " .. url .. " could not be reached: " .. err)
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,26 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] websocket_message
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{websocket_message} event is fired when a message is received on an open WebSocket connection.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This event is normally handled by @{http.Websocket.receive}, but it can also be pulled manually.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{string}: The URL of the WebSocket.
 | 
					 | 
				
			||||||
3. @{string}: The contents of the message.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints a message sent by a WebSocket:
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
local myURL = "wss://example.tweaked.cc/echo"
 | 
					 | 
				
			||||||
local ws = http.websocket(myURL)
 | 
					 | 
				
			||||||
ws.send("Hello!")
 | 
					 | 
				
			||||||
local event, url, message
 | 
					 | 
				
			||||||
repeat
 | 
					 | 
				
			||||||
    event, url, message = os.pullEvent("websocket_message")
 | 
					 | 
				
			||||||
until url == myURL
 | 
					 | 
				
			||||||
print("Received message from " .. url .. " with contents " .. message)
 | 
					 | 
				
			||||||
ws.close()
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1,28 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
module: [kind=event] websocket_success
 | 
					 | 
				
			||||||
see: http.websocketAsync To open a WebSocket asynchronously.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The @{websocket_success} event is fired when a WebSocket connection request returns successfully.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This event is normally handled inside @{http.websocket}, but it can still be seen when using @{http.websocketAsync}.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Return Values
 | 
					 | 
				
			||||||
1. @{string}: The event name.
 | 
					 | 
				
			||||||
2. @{string}: The URL of the site.
 | 
					 | 
				
			||||||
3. @{http.Websocket}: The handle for the WebSocket.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Example
 | 
					 | 
				
			||||||
Prints the content of a website (this may fail if the request fails):
 | 
					 | 
				
			||||||
```lua
 | 
					 | 
				
			||||||
local myURL = "wss://example.tweaked.cc/echo"
 | 
					 | 
				
			||||||
http.websocketAsync(myURL)
 | 
					 | 
				
			||||||
local event, url, handle
 | 
					 | 
				
			||||||
repeat
 | 
					 | 
				
			||||||
    event, url, handle = os.pullEvent("websocket_success")
 | 
					 | 
				
			||||||
until url == myURL
 | 
					 | 
				
			||||||
print("Connected to " .. url)
 | 
					 | 
				
			||||||
handle.send("Hello!")
 | 
					 | 
				
			||||||
print(handle.receive())
 | 
					 | 
				
			||||||
handle.close()
 | 
					 | 
				
			||||||
```
 | 
					 | 
				
			||||||
@@ -1 +0,0 @@
 | 
				
			|||||||
<meta name="theme-color" content="#c8d87c">
 | 
					 | 
				
			||||||
							
								
								
									
										11
									
								
								doc/index.md
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								doc/index.md
									
									
									
									
									
								
							@@ -1,11 +0,0 @@
 | 
				
			|||||||
#  [](https://minecraft.curseforge.com/projects/cc-tweaked "Download CC: Tweaked on CurseForge")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CC: Tweaked is a fork of [ComputerCraft], adding programmable computers, turtles and more to Minecraft.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This website contains documentation for all Lua libraries and APIs from the latest version of CC: Tweaked. This
 | 
					 | 
				
			||||||
documentation is still in development, so will most likely be incomplete. If you've found something you think is wrong,
 | 
					 | 
				
			||||||
or would like to help out [please get in touch on GitHub][gh].
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[bug]: https://github.com/SquidDev-CC/CC-Tweaked/issues/new/choose
 | 
					 | 
				
			||||||
[computercraft]: https://github.com/dan200/ComputerCraft "ComputerCraft on GitHub"
 | 
					 | 
				
			||||||
[gh]: https://github.com/SquidDev-CC/CC-Tweaked "CC:Tweaked on GitHub"
 | 
					 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								doc/logo.png
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								doc/logo.png
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 2.2 KiB  | 
@@ -1,34 +0,0 @@
 | 
				
			|||||||
---  The FS API allows you to manipulate files and the filesystem.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @module fs
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- Returns true if a path is mounted to the parent filesystem.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- The root filesystem "/" is considered a mount, along with disk folders and
 | 
					 | 
				
			||||||
-- the rom folder. Other programs (such as network shares) can exstend this to
 | 
					 | 
				
			||||||
-- make other mount types by correctly assigning their return value for getDrive.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @tparam string path The path to check.
 | 
					 | 
				
			||||||
-- @treturn boolean If the path is mounted, rather than a normal file/folder.
 | 
					 | 
				
			||||||
-- @throws If the path does not exist.
 | 
					 | 
				
			||||||
-- @see getDrive
 | 
					 | 
				
			||||||
function isDriveRoot(path) end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--[[- Provides completion for a file or directory name, suitable for use with
 | 
					 | 
				
			||||||
@{_G.read}.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
When a directory is a possible candidate for completion, two entries are
 | 
					 | 
				
			||||||
included - one with a trailing slash (indicating that entries within this
 | 
					 | 
				
			||||||
directory exist) and one without it (meaning this entry is an immediate
 | 
					 | 
				
			||||||
completion candidate). `include_dirs` can be set to @{false} to only include
 | 
					 | 
				
			||||||
those with a trailing slash.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@tparam string path The path to complete.
 | 
					 | 
				
			||||||
@tparam string location The location where paths are resolved from.
 | 
					 | 
				
			||||||
@tparam[opt] boolean include_files When @{false}, only directories will be
 | 
					 | 
				
			||||||
included in the returned list.
 | 
					 | 
				
			||||||
@tparam[opt] boolean include_dirs When @{false}, "raw" directories will not be
 | 
					 | 
				
			||||||
included in the returned list.
 | 
					 | 
				
			||||||
@treturn { string... } A list of possible completion candidates.
 | 
					 | 
				
			||||||
]]
 | 
					 | 
				
			||||||
function complete(path, location, include_files, include_dirs) end
 | 
					 | 
				
			||||||
@@ -1,125 +0,0 @@
 | 
				
			|||||||
--[[-
 | 
					 | 
				
			||||||
Functions in the global environment, defined in `bios.lua`. This does not
 | 
					 | 
				
			||||||
include standard Lua functions.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@module _G
 | 
					 | 
				
			||||||
]]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--[[- Pauses execution for the specified number of seconds.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
As it waits for a fixed amount of world ticks, `time` will automatically be
 | 
					 | 
				
			||||||
rounded up to the nearest multiple of 0.05 seconds. If you are using coroutines
 | 
					 | 
				
			||||||
or the @{parallel|parallel API}, it will only pause execution of the current
 | 
					 | 
				
			||||||
thread, not the whole program.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
**Note** Because sleep internally uses timers, it is a function that yields.
 | 
					 | 
				
			||||||
This means that you can use it to prevent "Too long without yielding" errors,
 | 
					 | 
				
			||||||
however, as the minimum sleep time is 0.05 seconds, it will slow your program
 | 
					 | 
				
			||||||
down.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
**Warning** Internally, this function queues and waits for a timer event (using
 | 
					 | 
				
			||||||
@{os.startTimer}), however it does not listen for any other events. This means
 | 
					 | 
				
			||||||
that any event that occurs while sleeping will be entirely discarded. If you
 | 
					 | 
				
			||||||
need to receive events while sleeping, consider using @{os.startTimer|timers},
 | 
					 | 
				
			||||||
or the @{parallel|parallel API}.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@tparam number time The number of seconds to sleep for, rounded up to the
 | 
					 | 
				
			||||||
nearest multiple of 0.05.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@see os.startTimer
 | 
					 | 
				
			||||||
@usage Sleep for three seconds.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    print("Sleeping for three seconds")
 | 
					 | 
				
			||||||
    sleep(3)
 | 
					 | 
				
			||||||
    print("Done!")
 | 
					 | 
				
			||||||
]]
 | 
					 | 
				
			||||||
function sleep(time) end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- Writes a line of text to the screen without a newline at the end, wrapping
 | 
					 | 
				
			||||||
-- text if necessary.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @tparam string text The text to write to the string
 | 
					 | 
				
			||||||
-- @treturn number The number of lines written
 | 
					 | 
				
			||||||
-- @see print A wrapper around write that adds a newline and accepts multiple arguments
 | 
					 | 
				
			||||||
-- @usage write("Hello, world")
 | 
					 | 
				
			||||||
function write(text) end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- Prints the specified values to the screen separated by spaces, wrapping if
 | 
					 | 
				
			||||||
-- necessary. After printing, the cursor is moved to the next line.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @param ... The values to print on the screen
 | 
					 | 
				
			||||||
-- @treturn number The number of lines written
 | 
					 | 
				
			||||||
-- @usage print("Hello, world!")
 | 
					 | 
				
			||||||
function print(...) end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- Prints the specified values to the screen in red, separated by spaces,
 | 
					 | 
				
			||||||
-- wrapping if necessary. After printing, the cursor is moved to the next line.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @param ... The values to print on the screen
 | 
					 | 
				
			||||||
-- @usage printError("Something went wrong!")
 | 
					 | 
				
			||||||
function printError(...) end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--[[- Reads user input from the terminal, automatically handling arrow keys,
 | 
					 | 
				
			||||||
pasting, character replacement, history scrollback, auto-completion, and
 | 
					 | 
				
			||||||
default values.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@tparam[opt] string replaceChar A character to replace each typed character with.
 | 
					 | 
				
			||||||
This can be used for hiding passwords, for example.
 | 
					 | 
				
			||||||
@tparam[opt] table history A table holding history items that can be scrolled
 | 
					 | 
				
			||||||
back to with the up/down arrow keys. The oldest item is at index 1, while the
 | 
					 | 
				
			||||||
newest item is at the highest index.
 | 
					 | 
				
			||||||
@tparam[opt] function(partial: string):({ string... }|nil) completeFn A function
 | 
					 | 
				
			||||||
to be used for completion. This function should take the partial text typed so
 | 
					 | 
				
			||||||
far, and returns a list of possible completion options.
 | 
					 | 
				
			||||||
@tparam[opt] string default Default text which should already be entered into
 | 
					 | 
				
			||||||
the prompt.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@treturn string The text typed in.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@see cc.completion For functions to help with completion.
 | 
					 | 
				
			||||||
@usage Read an string and echo it back to the user
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    write("> ")
 | 
					 | 
				
			||||||
    local msg = read()
 | 
					 | 
				
			||||||
    print(msg)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@usage Prompt a user for a password.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    while true do
 | 
					 | 
				
			||||||
      write("Password> ")
 | 
					 | 
				
			||||||
      local pwd = read("*")
 | 
					 | 
				
			||||||
      if pwd == "let me in" then break end
 | 
					 | 
				
			||||||
      print("Incorrect password, try again.")
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
    print("Logged in!")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@usage A complete example with completion, history and a default value.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    local completion = require "cc.completion"
 | 
					 | 
				
			||||||
    local history = { "potato", "orange", "apple" }
 | 
					 | 
				
			||||||
    local choices = { "apple", "orange", "banana", "strawberry" }
 | 
					 | 
				
			||||||
    write("> ")
 | 
					 | 
				
			||||||
    local msg = read(nil, history, function(text) return completion.choice(text, choices) end, "app")
 | 
					 | 
				
			||||||
    print(msg)
 | 
					 | 
				
			||||||
]]
 | 
					 | 
				
			||||||
function read(replaceChar, history, completeFn, default) end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- The ComputerCraft and Minecraft version of the current computer environment.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- For example, `ComputerCraft 1.93.0 (Minecraft 1.15.2)`.
 | 
					 | 
				
			||||||
-- @usage _HOST
 | 
					 | 
				
			||||||
_HOST = _HOST
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--[[- The default computer settings as defined in the ComputerCraft
 | 
					 | 
				
			||||||
configuration.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This is a comma-separated list of settings pairs defined by the mod
 | 
					 | 
				
			||||||
configuration or server owner. By default, it is empty.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
An example value to disable autocompletion:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    shell.autocomplete=false,lua.autocomplete=false,edit.autocomplete=false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@usage _CC_DEFAULT_SETTINGS
 | 
					 | 
				
			||||||
]]
 | 
					 | 
				
			||||||
_CC_DEFAULT_SETTINGS = _CC_DEFAULT_SETTINGS
 | 
					 | 
				
			||||||
@@ -1,157 +0,0 @@
 | 
				
			|||||||
--- The http library allows communicating with web servers, sending and
 | 
					 | 
				
			||||||
-- receiving data from them.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @module http
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- Asynchronously make a HTTP request to the given url.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- This returns immediately, a [`http_success`](#http-success-event) or
 | 
					 | 
				
			||||||
-- [`http_failure`](#http-failure-event) will be queued once the request has
 | 
					 | 
				
			||||||
-- completed.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @tparam      string url   The url to request
 | 
					 | 
				
			||||||
-- @tparam[opt] string body  An optional string containing the body of the
 | 
					 | 
				
			||||||
-- request. If specified, a `POST` request will be made instead.
 | 
					 | 
				
			||||||
-- @tparam[opt] { [string] = string } headers Additional headers to send as part
 | 
					 | 
				
			||||||
-- of this request.
 | 
					 | 
				
			||||||
-- @tparam[opt] boolean binary Whether to make a binary HTTP request. If true,
 | 
					 | 
				
			||||||
-- the body will not be UTF-8 encoded, and the received response will not be
 | 
					 | 
				
			||||||
-- decoded.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @tparam[2] {
 | 
					 | 
				
			||||||
--   url = string, body? = string, headers? = { [string] = string },
 | 
					 | 
				
			||||||
--   binary? = boolean, method? = string, redirect? = boolean,
 | 
					 | 
				
			||||||
-- } request Options for the request.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- This table form is an expanded version of the previous syntax. All arguments
 | 
					 | 
				
			||||||
-- from above are passed in as fields instead (for instance,
 | 
					 | 
				
			||||||
-- `http.request("https://example.com")` becomes `http.request { url =
 | 
					 | 
				
			||||||
-- "https://example.com" }`).
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- This table also accepts several additional options:
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
--  - `method`: Which HTTP method to use, for instance `"PATCH"` or `"DELETE"`.
 | 
					 | 
				
			||||||
--  - `redirect`: Whether to follow HTTP redirects. Defaults to true.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @see http.get  For a synchronous way to make GET requests.
 | 
					 | 
				
			||||||
-- @see http.post For a synchronous way to make POST requests.
 | 
					 | 
				
			||||||
function request(...) end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- Make a HTTP GET request to the given url.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @tparam string url   The url to request
 | 
					 | 
				
			||||||
-- @tparam[opt] { [string] = string } headers Additional headers to send as part
 | 
					 | 
				
			||||||
-- of this request.
 | 
					 | 
				
			||||||
-- @tparam[opt] boolean binary Whether to make a binary HTTP request. If true,
 | 
					 | 
				
			||||||
-- the body will not be UTF-8 encoded, and the received response will not be
 | 
					 | 
				
			||||||
-- decoded.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @tparam[2] {
 | 
					 | 
				
			||||||
--   url = string, headers? = { [string] = string },
 | 
					 | 
				
			||||||
--   binary? = boolean, method? = string, redirect? = boolean,
 | 
					 | 
				
			||||||
-- } request Options for the request. See @{http.request} for details on how
 | 
					 | 
				
			||||||
-- these options behave.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @treturn Response The resulting http response, which can be read from.
 | 
					 | 
				
			||||||
-- @treturn[2] nil When the http request failed, such as in the event of a 404
 | 
					 | 
				
			||||||
-- error or connection timeout.
 | 
					 | 
				
			||||||
-- @treturn string A message detailing why the request failed.
 | 
					 | 
				
			||||||
-- @treturn Response|nil The failing http response, if available.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @usage Make a request to [example.tweaked.cc](https://example.tweaked.cc),
 | 
					 | 
				
			||||||
-- and print the returned page.
 | 
					 | 
				
			||||||
-- ```lua
 | 
					 | 
				
			||||||
-- local request = http.get("https://example.tweaked.cc")
 | 
					 | 
				
			||||||
-- print(request.readAll())
 | 
					 | 
				
			||||||
-- -- => HTTP is working!
 | 
					 | 
				
			||||||
-- request.close()
 | 
					 | 
				
			||||||
-- ```
 | 
					 | 
				
			||||||
function get(...) end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- Make a HTTP POST request to the given url.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @tparam string url   The url to request
 | 
					 | 
				
			||||||
-- @tparam string body  The body of the POST request.
 | 
					 | 
				
			||||||
-- @tparam[opt] { [string] = string } headers Additional headers to send as part
 | 
					 | 
				
			||||||
-- of this request.
 | 
					 | 
				
			||||||
-- @tparam[opt] boolean binary Whether to make a binary HTTP request. If true,
 | 
					 | 
				
			||||||
-- the body will not be UTF-8 encoded, and the received response will not be
 | 
					 | 
				
			||||||
-- decoded.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @tparam[2] {
 | 
					 | 
				
			||||||
--   url = string, body? = string, headers? = { [string] = string },
 | 
					 | 
				
			||||||
--   binary? = boolean, method? = string, redirect? = boolean,
 | 
					 | 
				
			||||||
-- } request Options for the request. See @{http.request} for details on how
 | 
					 | 
				
			||||||
-- these options behave.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @treturn Response The resulting http response, which can be read from.
 | 
					 | 
				
			||||||
-- @treturn[2] nil When the http request failed, such as in the event of a 404
 | 
					 | 
				
			||||||
-- error or connection timeout.
 | 
					 | 
				
			||||||
-- @treturn string A message detailing why the request failed.
 | 
					 | 
				
			||||||
-- @treturn Response|nil The failing http response, if available.
 | 
					 | 
				
			||||||
function post(...) end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- Asynchronously determine whether a URL can be requested.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- If this returns `true`, one should also listen for [`http_check`
 | 
					 | 
				
			||||||
-- events](#http-check-event) which will container further information about
 | 
					 | 
				
			||||||
-- whether the URL is allowed or not.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @tparam string url The URL to check.
 | 
					 | 
				
			||||||
-- @treturn true When this url is not invalid. This does not imply that it is
 | 
					 | 
				
			||||||
-- allowed - see the comment above.
 | 
					 | 
				
			||||||
-- @treturn[2] false When this url is invalid.
 | 
					 | 
				
			||||||
-- @treturn string A reason why this URL is not valid (for instance, if it is
 | 
					 | 
				
			||||||
-- malformed, or blocked).
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @see http.checkURL For a synchronous version.
 | 
					 | 
				
			||||||
function checkURLAsync(url) end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- Determine whether a URL can be requested.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- If this returns `true`, one should also listen for [`http_check`
 | 
					 | 
				
			||||||
-- events](#http-check-event) which will container further information about
 | 
					 | 
				
			||||||
-- whether the URL is allowed or not.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @tparam string url The URL to check.
 | 
					 | 
				
			||||||
-- @treturn true When this url is valid and can be requested via @{http.request}.
 | 
					 | 
				
			||||||
-- @treturn[2] false When this url is invalid.
 | 
					 | 
				
			||||||
-- @treturn string A reason why this URL is not valid (for instance, if it is
 | 
					 | 
				
			||||||
-- malformed, or blocked).
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @see http.checkURLAsync For an asynchronous version.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @usage
 | 
					 | 
				
			||||||
-- ```lua
 | 
					 | 
				
			||||||
-- print(http.checkURL("https://example.tweaked.cc/"))
 | 
					 | 
				
			||||||
-- -- => true
 | 
					 | 
				
			||||||
-- print(http.checkURL("http://localhost/"))
 | 
					 | 
				
			||||||
-- -- => false Domain not permitted
 | 
					 | 
				
			||||||
-- print(http.checkURL("not a url"))
 | 
					 | 
				
			||||||
-- -- => false URL malformed
 | 
					 | 
				
			||||||
-- ```
 | 
					 | 
				
			||||||
function checkURL(url) end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- Open a websocket.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @tparam string url The websocket url to connect to. This should have the
 | 
					 | 
				
			||||||
-- `ws://` or `wss://` protocol.
 | 
					 | 
				
			||||||
-- @tparam[opt] { [string] = string } headers Additional headers to send as part
 | 
					 | 
				
			||||||
-- of the initial websocket connection.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @treturn Websocket The websocket connection.
 | 
					 | 
				
			||||||
-- @treturn[2] false If the websocket connection failed.
 | 
					 | 
				
			||||||
-- @treturn string An error message describing why the connection failed.
 | 
					 | 
				
			||||||
function websocket(url, headers) end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- Asynchronously open a websocket.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- This returns immediately, a [`websocket_success`](#websocket-success-event)
 | 
					 | 
				
			||||||
-- or [`websocket_failure`](#websocket-failure-event) will be queued once the
 | 
					 | 
				
			||||||
-- request has completed.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @tparam string url The websocket url to connect to. This should have the
 | 
					 | 
				
			||||||
-- `ws://` or `wss://` protocol.
 | 
					 | 
				
			||||||
-- @tparam[opt] { [string] = string } headers Additional headers to send as part
 | 
					 | 
				
			||||||
-- of the initial websocket connection.
 | 
					 | 
				
			||||||
function websocketAsync(url, headers) end
 | 
					 | 
				
			||||||
							
								
								
									
										125
									
								
								doc/stub/os.lua
									
									
									
									
									
								
							
							
						
						
									
										125
									
								
								doc/stub/os.lua
									
									
									
									
									
								
							@@ -1,125 +0,0 @@
 | 
				
			|||||||
-- Defined in bios.lua
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--[[- Loads the given API into the global environment.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
**Warning** This function is deprecated. Use of this function will pollute the
 | 
					 | 
				
			||||||
global table, use @{require} instead.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This function loads and executes the file at the given path, and all global
 | 
					 | 
				
			||||||
variables and functions exported by it will by available through the use of
 | 
					 | 
				
			||||||
`myAPI.<function name>`, where `myAPI` is the base name of the API file.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@tparam string path The path of the API to load.
 | 
					 | 
				
			||||||
@treturn boolean Whether or not the API was successfully loaded.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@deprecated Use @{require}.
 | 
					 | 
				
			||||||
]]
 | 
					 | 
				
			||||||
function loadAPI(path) end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- Unloads an API which was loaded by @{os.loadAPI}.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- This effectively removes the specified table from `_G`.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @tparam string name The name of the API to unload.
 | 
					 | 
				
			||||||
-- @deprecated Use @{require}.
 | 
					 | 
				
			||||||
function unloadAPI(name) end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--[[- Pause execution of the current thread and waits for any events matching
 | 
					 | 
				
			||||||
`filter`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This function @{coroutine.yield|yields} the current process and waits for it
 | 
					 | 
				
			||||||
to be resumed with a vararg list where the first element matches `filter`.
 | 
					 | 
				
			||||||
If no `filter` is supplied, this will match all events.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Unlike @{os.pullEventRaw}, it will stop the application upon a "terminate"
 | 
					 | 
				
			||||||
event, printing the error "Terminated".
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@tparam[opt] string filter Event to filter for.
 | 
					 | 
				
			||||||
@treturn string event The name of the event that fired.
 | 
					 | 
				
			||||||
@treturn any param... Optional additional parameters of the event.
 | 
					 | 
				
			||||||
@usage Listen for `mouse_click` events.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    while true do
 | 
					 | 
				
			||||||
        local event, button, x, y = os.pullEvent("mouse_click")
 | 
					 | 
				
			||||||
        print("Button", button, "was clicked at", x, ",", y)
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@usage Listen for multiple events.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    while true do
 | 
					 | 
				
			||||||
        local eventData = {os.pullEvent()}
 | 
					 | 
				
			||||||
        local event = eventData[1]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if event == "mouse_click" then
 | 
					 | 
				
			||||||
            print("Button", eventData[2], "was clicked at", eventData[3], ",", eventData[4])
 | 
					 | 
				
			||||||
        elseif event == "key" then
 | 
					 | 
				
			||||||
            print("Key code", eventData[2], "was pressed")
 | 
					 | 
				
			||||||
        end
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@see os.pullEventRaw To pull the terminate event.
 | 
					 | 
				
			||||||
]]
 | 
					 | 
				
			||||||
function pullEvent(filter) end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--[[- Pause execution of the current thread and waits for events, including the
 | 
					 | 
				
			||||||
`terminate` event.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This behaves almost the same as @{os.pullEvent}, except it allows you to handle
 | 
					 | 
				
			||||||
the `terminate` event yourself - the program will not stop execution when
 | 
					 | 
				
			||||||
<kbd>Ctrl+T</kbd> is pressed.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@tparam[opt] string filter Event to filter for.
 | 
					 | 
				
			||||||
@treturn string event The name of the event that fired.
 | 
					 | 
				
			||||||
@treturn any param... Optional additional parameters of the event.
 | 
					 | 
				
			||||||
@usage Listen for `terminate` events.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    while true do
 | 
					 | 
				
			||||||
        local event = os.pullEventRaw()
 | 
					 | 
				
			||||||
        if event == "terminate" then
 | 
					 | 
				
			||||||
            print("Caught terminate event!")
 | 
					 | 
				
			||||||
        end
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@see os.pullEvent To pull events normally.
 | 
					 | 
				
			||||||
]]
 | 
					 | 
				
			||||||
function pullEventRaw(filter) end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- Pauses execution for the specified number of seconds, alias of @{_G.sleep}.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @tparam number time The number of seconds to sleep for, rounded up to the
 | 
					 | 
				
			||||||
-- nearest multiple of 0.05.
 | 
					 | 
				
			||||||
function sleep(time) end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- Get the current CraftOS version (for example, `CraftOS 1.8`).
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- This is defined by `bios.lua`. For the current version of CC:Tweaked, this
 | 
					 | 
				
			||||||
-- should return `CraftOS 1.8`.
 | 
					 | 
				
			||||||
--
 | 
					 | 
				
			||||||
-- @treturn string The current CraftOS version.
 | 
					 | 
				
			||||||
-- @usage os.version()
 | 
					 | 
				
			||||||
function version() end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--[[- Run the program at the given path with the specified environment and
 | 
					 | 
				
			||||||
arguments.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This function does not resolve program names like the shell does. This means
 | 
					 | 
				
			||||||
that, for example, `os.run("edit")` will not work. As well as this, it does not
 | 
					 | 
				
			||||||
provide access to the @{shell} API in the environment. For this behaviour, use
 | 
					 | 
				
			||||||
@{shell.run} instead.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
If the program cannot be found, or failed to run, it will print the error and
 | 
					 | 
				
			||||||
return `false`. If you want to handle this more gracefully, use an alternative
 | 
					 | 
				
			||||||
such as @{loadfile}.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@tparam table env The environment to run the program with.
 | 
					 | 
				
			||||||
@tparam string path The exact path of the program to run.
 | 
					 | 
				
			||||||
@param ... The arguments to pass to the program.
 | 
					 | 
				
			||||||
@treturn boolean Whether or not the program ran successfully.
 | 
					 | 
				
			||||||
@usage Run the default shell from within your program:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    os.run({}, "/rom/programs/shell.lua")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@see shell.run
 | 
					 | 
				
			||||||
@see loadfile
 | 
					 | 
				
			||||||
]]
 | 
					 | 
				
			||||||
function run(env, path, ...) end
 | 
					 | 
				
			||||||
@@ -1 +0,0 @@
 | 
				
			|||||||
function craft(limit) end
 | 
					 | 
				
			||||||
@@ -1,6 +1,17 @@
 | 
				
			|||||||
# Mod properties
 | 
					# Done to increase the memory available to gradle.
 | 
				
			||||||
mod_version=1.95.3
 | 
					org.gradle.jvmargs=-Xmx1G
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Minecraft properties (update mods.toml when changing)
 | 
					# Mod properties
 | 
				
			||||||
mc_version=1.15.2
 | 
					mod_version=1.97.2
 | 
				
			||||||
forge_version=31.1.41
 | 
					
 | 
				
			||||||
 | 
					# Minecraft properties
 | 
				
			||||||
 | 
					mc_version=1.17.1
 | 
				
			||||||
 | 
					mappings_version=61
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Dependencies
 | 
				
			||||||
 | 
					cloth_config_version=5.0.34
 | 
				
			||||||
 | 
					fabric_loader_version=0.11.7
 | 
				
			||||||
 | 
					fabric_api_version=0.40.1+1.17
 | 
				
			||||||
 | 
					jankson_version=1.2.0
 | 
				
			||||||
 | 
					modmenu_version=2.0.2
 | 
				
			||||||
 | 
					cloth_api_version=2.0.54
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +1,5 @@
 | 
				
			|||||||
distributionBase=GRADLE_USER_HOME
 | 
					distributionBase=GRADLE_USER_HOME
 | 
				
			||||||
distributionPath=wrapper/dists
 | 
					distributionPath=wrapper/dists
 | 
				
			||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-bin.zip
 | 
					distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
 | 
				
			||||||
zipStoreBase=GRADLE_USER_HOME
 | 
					zipStoreBase=GRADLE_USER_HOME
 | 
				
			||||||
zipStorePath=wrapper/dists
 | 
					zipStorePath=wrapper/dists
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										178
									
								
								gradlew.bat
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										178
									
								
								gradlew.bat
									
									
									
									
										vendored
									
									
								
							@@ -1,89 +1,89 @@
 | 
				
			|||||||
@rem
 | 
					@rem
 | 
				
			||||||
@rem Copyright 2015 the original author or authors.
 | 
					@rem Copyright 2015 the original author or authors.
 | 
				
			||||||
@rem
 | 
					@rem
 | 
				
			||||||
@rem Licensed under the Apache License, Version 2.0 (the "License");
 | 
					@rem Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
@rem you may not use this file except in compliance with the License.
 | 
					@rem you may not use this file except in compliance with the License.
 | 
				
			||||||
@rem You may obtain a copy of the License at
 | 
					@rem You may obtain a copy of the License at
 | 
				
			||||||
@rem
 | 
					@rem
 | 
				
			||||||
@rem      https://www.apache.org/licenses/LICENSE-2.0
 | 
					@rem      https://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
@rem
 | 
					@rem
 | 
				
			||||||
@rem Unless required by applicable law or agreed to in writing, software
 | 
					@rem Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
 | 
					@rem distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
					@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
@rem See the License for the specific language governing permissions and
 | 
					@rem See the License for the specific language governing permissions and
 | 
				
			||||||
@rem limitations under the License.
 | 
					@rem limitations under the License.
 | 
				
			||||||
@rem
 | 
					@rem
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@if "%DEBUG%" == "" @echo off
 | 
					@if "%DEBUG%" == "" @echo off
 | 
				
			||||||
@rem ##########################################################################
 | 
					@rem ##########################################################################
 | 
				
			||||||
@rem
 | 
					@rem
 | 
				
			||||||
@rem  Gradle startup script for Windows
 | 
					@rem  Gradle startup script for Windows
 | 
				
			||||||
@rem
 | 
					@rem
 | 
				
			||||||
@rem ##########################################################################
 | 
					@rem ##########################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@rem Set local scope for the variables with windows NT shell
 | 
					@rem Set local scope for the variables with windows NT shell
 | 
				
			||||||
if "%OS%"=="Windows_NT" setlocal
 | 
					if "%OS%"=="Windows_NT" setlocal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set DIRNAME=%~dp0
 | 
					set DIRNAME=%~dp0
 | 
				
			||||||
if "%DIRNAME%" == "" set DIRNAME=.
 | 
					if "%DIRNAME%" == "" set DIRNAME=.
 | 
				
			||||||
set APP_BASE_NAME=%~n0
 | 
					set APP_BASE_NAME=%~n0
 | 
				
			||||||
set APP_HOME=%DIRNAME%
 | 
					set APP_HOME=%DIRNAME%
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
 | 
					@rem Resolve any "." and ".." in APP_HOME to make it shorter.
 | 
				
			||||||
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
 | 
					for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
					@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
				
			||||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
 | 
					set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@rem Find java.exe
 | 
					@rem Find java.exe
 | 
				
			||||||
if defined JAVA_HOME goto findJavaFromJavaHome
 | 
					if defined JAVA_HOME goto findJavaFromJavaHome
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set JAVA_EXE=java.exe
 | 
					set JAVA_EXE=java.exe
 | 
				
			||||||
%JAVA_EXE% -version >NUL 2>&1
 | 
					%JAVA_EXE% -version >NUL 2>&1
 | 
				
			||||||
if "%ERRORLEVEL%" == "0" goto execute
 | 
					if "%ERRORLEVEL%" == "0" goto execute
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo.
 | 
					echo.
 | 
				
			||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 | 
					echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 | 
				
			||||||
echo.
 | 
					echo.
 | 
				
			||||||
echo Please set the JAVA_HOME variable in your environment to match the
 | 
					echo Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
echo location of your Java installation.
 | 
					echo location of your Java installation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
goto fail
 | 
					goto fail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:findJavaFromJavaHome
 | 
					:findJavaFromJavaHome
 | 
				
			||||||
set JAVA_HOME=%JAVA_HOME:"=%
 | 
					set JAVA_HOME=%JAVA_HOME:"=%
 | 
				
			||||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
 | 
					set JAVA_EXE=%JAVA_HOME%/bin/java.exe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if exist "%JAVA_EXE%" goto execute
 | 
					if exist "%JAVA_EXE%" goto execute
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo.
 | 
					echo.
 | 
				
			||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
 | 
					echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
 | 
				
			||||||
echo.
 | 
					echo.
 | 
				
			||||||
echo Please set the JAVA_HOME variable in your environment to match the
 | 
					echo Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
echo location of your Java installation.
 | 
					echo location of your Java installation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
goto fail
 | 
					goto fail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:execute
 | 
					:execute
 | 
				
			||||||
@rem Setup the command line
 | 
					@rem Setup the command line
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
 | 
					set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@rem Execute Gradle
 | 
					@rem Execute Gradle
 | 
				
			||||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
 | 
					"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:end
 | 
					:end
 | 
				
			||||||
@rem End local scope for the variables with windows NT shell
 | 
					@rem End local scope for the variables with windows NT shell
 | 
				
			||||||
if "%ERRORLEVEL%"=="0" goto mainEnd
 | 
					if "%ERRORLEVEL%"=="0" goto mainEnd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:fail
 | 
					:fail
 | 
				
			||||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
 | 
					rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
 | 
				
			||||||
rem the _cmd.exe /c_ return code!
 | 
					rem the _cmd.exe /c_ return code!
 | 
				
			||||||
if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
 | 
					if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
 | 
				
			||||||
exit /b 1
 | 
					exit /b 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:mainEnd
 | 
					:mainEnd
 | 
				
			||||||
if "%OS%"=="Windows_NT" endlocal
 | 
					if "%OS%"=="Windows_NT" endlocal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:omega
 | 
					:omega
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										123
									
								
								illuaminate.sexp
									
									
									
									
									
								
							
							
						
						
									
										123
									
								
								illuaminate.sexp
									
									
									
									
									
								
							@@ -1,123 +0,0 @@
 | 
				
			|||||||
; -*- mode: Lisp;-*-
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(sources
 | 
					 | 
				
			||||||
  /doc/stub/
 | 
					 | 
				
			||||||
  /doc/events/
 | 
					 | 
				
			||||||
  /build/docs/luaJavadoc/
 | 
					 | 
				
			||||||
  /src/main/resources/*/computercraft/lua/bios.lua
 | 
					 | 
				
			||||||
  /src/main/resources/*/computercraft/lua/rom/
 | 
					 | 
				
			||||||
  /src/test/resources/test-rom
 | 
					 | 
				
			||||||
  /src/web/mount)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(doc
 | 
					 | 
				
			||||||
  (destination build/docs/lua)
 | 
					 | 
				
			||||||
  (index doc/index.md)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  (site
 | 
					 | 
				
			||||||
    (title "CC: Tweaked")
 | 
					 | 
				
			||||||
    (logo src/main/resources/pack.png)
 | 
					 | 
				
			||||||
    (url https://tweaked.cc/)
 | 
					 | 
				
			||||||
    (source-link https://github.com/SquidDev-CC/CC-Tweaked/blob/${commit}/${path}#L${line})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    (styles src/web/styles.css)
 | 
					 | 
				
			||||||
    (scripts build/rollup/index.js)
 | 
					 | 
				
			||||||
    (head doc/head.html))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  (module-kinds
 | 
					 | 
				
			||||||
    (peripheral Peripherals)
 | 
					 | 
				
			||||||
    (generic_peripheral "Generic Peripherals")
 | 
					 | 
				
			||||||
    (event Events))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  (library-path
 | 
					 | 
				
			||||||
    /doc/stub/
 | 
					 | 
				
			||||||
    /build/docs/luaJavadoc/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /src/main/resources/*/computercraft/lua/rom/apis/
 | 
					 | 
				
			||||||
    /src/main/resources/*/computercraft/lua/rom/apis/command/
 | 
					 | 
				
			||||||
    /src/main/resources/*/computercraft/lua/rom/apis/turtle/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /src/main/resources/*/computercraft/lua/rom/modules/main/
 | 
					 | 
				
			||||||
    /src/main/resources/*/computercraft/lua/rom/modules/command/
 | 
					 | 
				
			||||||
    /src/main/resources/*/computercraft/lua/rom/modules/turtle/))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(at /
 | 
					 | 
				
			||||||
  (linters
 | 
					 | 
				
			||||||
    syntax:string-index
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ;; It'd be nice to avoid this, but right now there's a lot of instances of
 | 
					 | 
				
			||||||
    ;; it.
 | 
					 | 
				
			||||||
    -var:set-loop
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ;; It's useful to name arguments for documentation, so we allow this. It'd
 | 
					 | 
				
			||||||
    ;; be good to find a compromise in the future, but this works for now.
 | 
					 | 
				
			||||||
    -var:unused-arg)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  (lint
 | 
					 | 
				
			||||||
    (bracket-spaces
 | 
					 | 
				
			||||||
      (call no-space)
 | 
					 | 
				
			||||||
      (function-args no-space)
 | 
					 | 
				
			||||||
      (parens no-space)
 | 
					 | 
				
			||||||
      (table space)
 | 
					 | 
				
			||||||
      (index no-space))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ;; colours imports from colors, and we don't handle that right now.
 | 
					 | 
				
			||||||
    ;; keys is entirely dynamic, so we skip it.
 | 
					 | 
				
			||||||
    (dynamic-modules colours keys _G)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    (globals
 | 
					 | 
				
			||||||
      :max
 | 
					 | 
				
			||||||
      _CC_DEFAULT_SETTINGS
 | 
					 | 
				
			||||||
      _CC_DISABLE_LUA51_FEATURES
 | 
					 | 
				
			||||||
      ;; Ideally we'd pick these up from bios.lua, but illuaminate currently
 | 
					 | 
				
			||||||
      ;; isn't smart enough.
 | 
					 | 
				
			||||||
      sleep write printError read rs)))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; We disable the unused global linter in bios.lua and the APIs. In the future
 | 
					 | 
				
			||||||
;; hopefully we'll get illuaminate to handle this.
 | 
					 | 
				
			||||||
(at
 | 
					 | 
				
			||||||
  (/src/main/resources/*/computercraft/lua/bios.lua
 | 
					 | 
				
			||||||
   /src/main/resources/*/computercraft/lua/rom/apis/)
 | 
					 | 
				
			||||||
  (linters -var:unused-global)
 | 
					 | 
				
			||||||
  (lint (allow-toplevel-global true)))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Silence some variable warnings in documentation stubs.
 | 
					 | 
				
			||||||
(at (/doc/stub/ /build/docs/luaJavadoc/)
 | 
					 | 
				
			||||||
  (linters -var:unused-global)
 | 
					 | 
				
			||||||
  (lint (allow-toplevel-global true)))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Suppress warnings for currently undocumented modules.
 | 
					 | 
				
			||||||
(at
 | 
					 | 
				
			||||||
  (; Java APIs
 | 
					 | 
				
			||||||
   /doc/stub/http.lua
 | 
					 | 
				
			||||||
   /doc/stub/os.lua
 | 
					 | 
				
			||||||
   /doc/stub/turtle.lua
 | 
					 | 
				
			||||||
   /doc/stub/global.lua
 | 
					 | 
				
			||||||
   ; Java generated APIs
 | 
					 | 
				
			||||||
   /build/docs/luaJavadoc/turtle.lua
 | 
					 | 
				
			||||||
   ; Peripherals
 | 
					 | 
				
			||||||
   /build/docs/luaJavadoc/drive.lua
 | 
					 | 
				
			||||||
   /build/docs/luaJavadoc/speaker.lua
 | 
					 | 
				
			||||||
   /build/docs/luaJavadoc/printer.lua
 | 
					 | 
				
			||||||
   ; Generic peripherals
 | 
					 | 
				
			||||||
   /build/docs/luaJavadoc/fluid_storage.lua
 | 
					 | 
				
			||||||
   ; Lua APIs
 | 
					 | 
				
			||||||
   /src/main/resources/*/computercraft/lua/rom/apis/io.lua
 | 
					 | 
				
			||||||
   /src/main/resources/*/computercraft/lua/rom/apis/window.lua)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  (linters -doc:undocumented -doc:undocumented-arg -doc:undocumented-return))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
;; Suppress warnings for the BIOS using its own deprecated members for now.
 | 
					 | 
				
			||||||
(at /src/main/resources/*/computercraft/lua/bios.lua
 | 
					 | 
				
			||||||
  (linters -var:deprecated))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(at /src/test/resources/test-rom
 | 
					 | 
				
			||||||
  ; We should still be able to test deprecated members.
 | 
					 | 
				
			||||||
  (linters -var:deprecated)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  (lint
 | 
					 | 
				
			||||||
    (globals
 | 
					 | 
				
			||||||
      :max sleep write
 | 
					 | 
				
			||||||
      cct_test describe expect howlci fail it pending stub)))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
(at /src/web/mount/expr_template.lua (lint (globals :max __expr__)))
 | 
					 | 
				
			||||||
							
								
								
									
										5
									
								
								jitpack.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								jitpack.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					before_install:
 | 
				
			||||||
 | 
					  - wget https://github.com/sormuras/bach/raw/master/install-jdk.sh
 | 
				
			||||||
 | 
					  - source ./install-jdk.sh --feature 16 --license GPL
 | 
				
			||||||
 | 
					jdk:
 | 
				
			||||||
 | 
					  - openjdk16
 | 
				
			||||||
							
								
								
									
										172
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										172
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -1,172 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "name": "tweaked.cc",
 | 
					 | 
				
			||||||
  "version": "1.0.0",
 | 
					 | 
				
			||||||
  "lockfileVersion": 1,
 | 
					 | 
				
			||||||
  "requires": true,
 | 
					 | 
				
			||||||
  "dependencies": {
 | 
					 | 
				
			||||||
    "@rollup/plugin-typescript": {
 | 
					 | 
				
			||||||
      "version": "6.1.0",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-6.1.0.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-hJxaiE6WyNOsK+fZpbFh9CUijZYqPQuAOWO5khaGTUkM8DYNNyA2TDlgamecE+qLOG1G1+CwbWMAx3rbqpp6xQ==",
 | 
					 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "requires": {
 | 
					 | 
				
			||||||
        "@rollup/pluginutils": "^3.1.0",
 | 
					 | 
				
			||||||
        "resolve": "^1.17.0"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "@rollup/pluginutils": {
 | 
					 | 
				
			||||||
      "version": "3.1.0",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
 | 
					 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "requires": {
 | 
					 | 
				
			||||||
        "@types/estree": "0.0.39",
 | 
					 | 
				
			||||||
        "estree-walker": "^1.0.1",
 | 
					 | 
				
			||||||
        "picomatch": "^2.2.2"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "@types/estree": {
 | 
					 | 
				
			||||||
      "version": "0.0.39",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
 | 
					 | 
				
			||||||
      "dev": true
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "buffer-from": {
 | 
					 | 
				
			||||||
      "version": "1.1.1",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
 | 
					 | 
				
			||||||
      "dev": true
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "commander": {
 | 
					 | 
				
			||||||
      "version": "2.20.3",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
 | 
					 | 
				
			||||||
      "dev": true
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "estree-walker": {
 | 
					 | 
				
			||||||
      "version": "1.0.1",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
 | 
					 | 
				
			||||||
      "dev": true
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "fsevents": {
 | 
					 | 
				
			||||||
      "version": "2.1.3",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
 | 
					 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "optional": true
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "function-bind": {
 | 
					 | 
				
			||||||
      "version": "1.1.1",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
 | 
					 | 
				
			||||||
      "dev": true
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "has": {
 | 
					 | 
				
			||||||
      "version": "1.0.3",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
 | 
					 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "requires": {
 | 
					 | 
				
			||||||
        "function-bind": "^1.1.1"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "is-core-module": {
 | 
					 | 
				
			||||||
      "version": "2.1.0",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==",
 | 
					 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "requires": {
 | 
					 | 
				
			||||||
        "has": "^1.0.3"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "path-parse": {
 | 
					 | 
				
			||||||
      "version": "1.0.6",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
 | 
					 | 
				
			||||||
      "dev": true
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "picomatch": {
 | 
					 | 
				
			||||||
      "version": "2.2.2",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
 | 
					 | 
				
			||||||
      "dev": true
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "preact": {
 | 
					 | 
				
			||||||
      "version": "10.5.5",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/preact/-/preact-10.5.5.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-5ONLNH1SXMzzbQoExZX4TELemNt+TEDb622xXFNfZngjjM9qtrzseJt+EfiUu4TZ6EJ95X5sE1ES4yqHFSIdhg=="
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "requirejs": {
 | 
					 | 
				
			||||||
      "version": "2.3.6",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==",
 | 
					 | 
				
			||||||
      "dev": true
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "resolve": {
 | 
					 | 
				
			||||||
      "version": "1.18.1",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==",
 | 
					 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "requires": {
 | 
					 | 
				
			||||||
        "is-core-module": "^2.0.0",
 | 
					 | 
				
			||||||
        "path-parse": "^1.0.6"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "rollup": {
 | 
					 | 
				
			||||||
      "version": "2.33.1",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==",
 | 
					 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "requires": {
 | 
					 | 
				
			||||||
        "fsevents": "~2.1.2"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "source-map": {
 | 
					 | 
				
			||||||
      "version": "0.7.3",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
 | 
					 | 
				
			||||||
      "dev": true
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "source-map-support": {
 | 
					 | 
				
			||||||
      "version": "0.5.19",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
 | 
					 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "requires": {
 | 
					 | 
				
			||||||
        "buffer-from": "^1.0.0",
 | 
					 | 
				
			||||||
        "source-map": "^0.6.0"
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "dependencies": {
 | 
					 | 
				
			||||||
        "source-map": {
 | 
					 | 
				
			||||||
          "version": "0.6.1",
 | 
					 | 
				
			||||||
          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
 | 
					 | 
				
			||||||
          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
 | 
					 | 
				
			||||||
          "dev": true
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "terser": {
 | 
					 | 
				
			||||||
      "version": "5.3.8",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==",
 | 
					 | 
				
			||||||
      "dev": true,
 | 
					 | 
				
			||||||
      "requires": {
 | 
					 | 
				
			||||||
        "commander": "^2.20.0",
 | 
					 | 
				
			||||||
        "source-map": "~0.7.2",
 | 
					 | 
				
			||||||
        "source-map-support": "~0.5.19"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "tslib": {
 | 
					 | 
				
			||||||
      "version": "2.0.3",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "typescript": {
 | 
					 | 
				
			||||||
      "version": "4.0.5",
 | 
					 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.5.tgz",
 | 
					 | 
				
			||||||
      "integrity": "sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==",
 | 
					 | 
				
			||||||
      "dev": true
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										18
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								package.json
									
									
									
									
									
								
							@@ -1,18 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "name": "tweaked.cc",
 | 
					 | 
				
			||||||
  "version": "1.0.0",
 | 
					 | 
				
			||||||
  "description": "Website additions for tweaked.cc",
 | 
					 | 
				
			||||||
  "author": "SquidDev",
 | 
					 | 
				
			||||||
  "license": "BSD-3-Clause",
 | 
					 | 
				
			||||||
  "dependencies": {
 | 
					 | 
				
			||||||
    "preact": "^10.5.5",
 | 
					 | 
				
			||||||
    "tslib": "^2.0.3"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "devDependencies": {
 | 
					 | 
				
			||||||
    "@rollup/plugin-typescript": "^6.1.0",
 | 
					 | 
				
			||||||
    "requirejs": "^2.3.6",
 | 
					 | 
				
			||||||
    "rollup": "^2.33.1",
 | 
					 | 
				
			||||||
    "terser": "^5.3.8",
 | 
					 | 
				
			||||||
    "typescript": "^4.0.5"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										627
									
								
								patchwork.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										627
									
								
								patchwork.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,627 @@
 | 
				
			|||||||
 | 
					# Just my list of things I have ported over
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Format for the changelog of ported stuff
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					commit    // Shows commit from CC:T
 | 
				
			||||||
 | 
					commit2   // Shows a commit that is the same thing, just a clean up, only if right after
 | 
				
			||||||
 | 
					Title     // Commit Title
 | 
				
			||||||
 | 
					SubScript // Desc of commit
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If a edit that is present in CC:T is not needed, I will skip over it.
 | 
				
			||||||
 | 
					Any and all references to an issue number, are to be found on CC:T's repo.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Any commit that starts with `[Patchwork]` are purely edits made by my hand, and not based on other commits from CC:T, this is to help differentiate my changes from the official changes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Lines that are found above a commit in this log like this one, (excluding this one) are comments about how i had to implement things that are not a simple 1:1 (excluding fabric/forge differences) conversion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```md
 | 
				
			||||||
 | 
					5155e18de279a193c558aa029963486fd1294769
 | 
				
			||||||
 | 
					Added translation for Vietnamese
 | 
				
			||||||
 | 
					Co-authored-by: Boom <boom@flyingpackets.net>
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					7e121ff72f2b1504cd6af47b57500876682bac45
 | 
				
			||||||
 | 
					ae6124d1f477487abab1858abde8c4ec49dfee3c
 | 
				
			||||||
 | 
					Translations for Vienamese
 | 
				
			||||||
 | 
					Co-authored-by: Boom <boom@flyingpackets.net>
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					59de21eae29849988e77fad6bc335f5ce78dfec7
 | 
				
			||||||
 | 
					Handle tabs when parsing JSON
 | 
				
			||||||
 | 
					Fixes #539
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					748ebbe66bf0a4239bde34f557e4b4b75d61d990
 | 
				
			||||||
 | 
					Bump to 1.92.0
 | 
				
			||||||
 | 
					A tiny release, but there's new features so it's technically a minor
 | 
				
			||||||
 | 
					bump.
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Cherry Picked because this update was partially related to forge updates rather than mod updates
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					8b4a01df27ff7f6fa9ffd9c2188c6e3166edd515
 | 
				
			||||||
 | 
					Update to Minecraft 1.16.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					I hope the Fabric folks now realise this is gonna be a race of who can
 | 
				
			||||||
 | 
					update first :p. Either way, this was a very easy update - only changes
 | 
				
			||||||
 | 
					were due to unrelated Forge changes.
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					87393e8aef9ddfaca465d626ee7cff5ff499a7e8
 | 
				
			||||||
 | 
					Fix additional `-` in docs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Why isn't this automatically stripped! Bad squid.
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					275ca58a82c627128a145a8754cbe32568536bd9
 | 
				
			||||||
 | 
					HTTP rules now allow filtering by port
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The HTTP filtering system becomes even more complex! Though in this
 | 
				
			||||||
 | 
					case, it's pretty minimal, and definitely worth doing.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For instance, the following rule will allow connecting to localhost on
 | 
				
			||||||
 | 
					port :8080.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [[http.rules]]
 | 
				
			||||||
 | 
					    host = "127.0.0.1"
 | 
				
			||||||
 | 
					    port = 8080
 | 
				
			||||||
 | 
					    action = "allow"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Other rules as before.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Closes #540
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The alterations in ColourUtils.java were not needed so they were not ported over
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					6f868849ab2f264508e12c184cc56f2632aaf5bc
 | 
				
			||||||
 | 
					Use tags to check if something is a dye
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					We half did this already, just needed to change a couple of checks.
 | 
				
			||||||
 | 
					Closes #541.
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					6cee4efcd3610536ee74330cd728f7371011e5a8
 | 
				
			||||||
 | 
					Fix incorrect open container check
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Was this always broken, or did it happen in a Minecraft update? Don't
 | 
				
			||||||
 | 
					know, but it's a very silly mistake either way. Fixes #544
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					0832974725b2478c5227b81f82c35bbf03cf6aba
 | 
				
			||||||
 | 
					Translations for Swedish
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Co-authored-by: David Isaksson <davidisaksson93@gmail.com>
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					84036d97d99efd8762e0170002060ae3471508bf
 | 
				
			||||||
 | 
					Fix io.open documentation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Well, that was silly.
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					I set the default properties for computers as `Block.GLASS` and then set their strength to `2F` and their soundgroup to stone
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					8472112fc1eaad18ed6ed2c6c62b040fe421e81a
 | 
				
			||||||
 | 
					Don't propagate adjacent redstone signals for computers (#549)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Minecraft propagates "strong" redstone signals (such as those directly
 | 
				
			||||||
 | 
					from comparators or repeaters) through solid blocks. This includes
 | 
				
			||||||
 | 
					computers, which is a little annoying as it means one cannot feed
 | 
				
			||||||
 | 
					redstone wire from one side and a repeater from another.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This changes computers to not propagate strong redstone signals, in the
 | 
				
			||||||
 | 
					same way transparent blocks like glass do.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Closes #548.
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					30d35883b83831900b34040f0131c7e06f5c3e52
 | 
				
			||||||
 | 
					Fix my docs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Thanks @plt-hokusai. Kinda embarrassing this slipped through - I
 | 
				
			||||||
 | 
					evidently need to lint examples too.
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					34a2c835d412c0d9e1fb20a42b7f2cd2738289c7
 | 
				
			||||||
 | 
					Add color table to docs (#553)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					All API Documentation updates,
 | 
				
			||||||
 | 
					`Not Needed` for this repo.
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					93068402a2ffec00eedb8fe2d859ebdc005a1989
 | 
				
			||||||
 | 
					Document remaining OS functions (#554)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					01d81cb91da938836f953b290ad6b8fc87cb7e35
 | 
				
			||||||
 | 
					Update illuaminate CSS for deprecation (#556)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Not Needed
 | 
				
			||||||
 | 
					4766833cf2d041ed179529eecb9402ad09b2b79b
 | 
				
			||||||
 | 
					Bump JEI/crafttweaker versions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In my defence, they weren't out when I started the 1.15 update.
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					bf6053906dc6a3c7b0d40d5b097e745dce1f33bc
 | 
				
			||||||
 | 
					Fix TBO norm issues on old GPUs
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Not Needed
 | 
				
			||||||
 | 
					113b560a201dbdea9de2a2ef536bcce1d6e51978
 | 
				
			||||||
 | 
					Update configuration to match latest illuaminate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ooooooh, it's all fancy now. Well, that or horrifically broken.
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					c334423d42ba3b653ac3a8c27bce7970457f8f96
 | 
				
			||||||
 | 
					Add function to get window visibility
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Closes #562
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Co-authored-by: devomaa <lmao@distruzione.org>
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[WARN] Could not implement changes to the following files
 | 
				
			||||||
 | 
					* `src/main/java/dan200/computercraft/ComputerCraft.java` < Structure too different, cannot find equivalent to alter
 | 
				
			||||||
 | 
					* `src/main/java/dan200/computercraft/shared/Config.java` < Files Does not exist in this repo
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					84a6bb1cf3b0668ddc7d8c409a2477a42390e3f7
 | 
				
			||||||
 | 
					Make generic peripherals on by default
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This is a long way away from "feature complete" as it were. However,
 | 
				
			||||||
 | 
					it's definitely at a point where it's suitable for general usage - I'm
 | 
				
			||||||
 | 
					happy with the API, and don't think I'm going to be breaking things any
 | 
				
			||||||
 | 
					time soon.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					That said, things aren't exposed yet for Java-side public consumption. I
 | 
				
			||||||
 | 
					was kinda waiting until working on Plethora to actually do that, but not
 | 
				
			||||||
 | 
					sure if/when that'll happen.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If someone else wants to work on an integration mod (or just adding
 | 
				
			||||||
 | 
					integrations for their own mod), do get in touch and I can work out how
 | 
				
			||||||
 | 
					to expose this.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Closes #452
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Not Needed
 | 
				
			||||||
 | 
					6aae4e576621090840724e094aa25e51696530fc
 | 
				
			||||||
 | 
					Remove superfluous imports
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Hah, this is embarassing
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[TODO] [M3R1-01] Code has been applied, players still dont get achievments
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					f6160bdc57b3d9850607c2c7c2ce9734b4963478
 | 
				
			||||||
 | 
					Fix players not getting advancements when they own turtles
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					When we construct a new ServerPlayerEntity (and thus TurtlePlayer), we
 | 
				
			||||||
 | 
					get the current (global) advancement state and call .setPlayer() on it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					As grantCriterion blocks FakePlayers from getting advancements, this
 | 
				
			||||||
 | 
					means a player will no longer receive any advancements, as the "wrong"
 | 
				
			||||||
 | 
					player object is being consulted.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					As a temporary work around, we attempt to restore the previous player to
 | 
				
			||||||
 | 
					the advancement store. I'll try to upstream something into Forge to
 | 
				
			||||||
 | 
					resolve this properly.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fixes #564
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					17a932920711a5c0361a5048c9e0a5e7a58e6364
 | 
				
			||||||
 | 
					Bump cct-javadoc version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Documentation will now be sorted (somewhat) correctly!
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					a6fcfb6af2fc1bef8ca3a19122c9267549202424
 | 
				
			||||||
 | 
					Draw in-hand pocket computers with blending
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It might be worth switching to RenderTypes here, rather than a pure
 | 
				
			||||||
 | 
					Tesselator, but this'll do for now.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fixes Zundrel/cc-tweaked-fabric#20.
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					c58441b29c3715f092e7f3747bb3ec65ae5a3d29
 | 
				
			||||||
 | 
					Various SNBT parsing improvements
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Correctly handle:
 | 
				
			||||||
 | 
					 - Typed arrays ([I; 1, 2, 3])
 | 
				
			||||||
 | 
					 - All suffixed numbers (1.2d)
 | 
				
			||||||
 | 
					 - Single-quoted strings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fixes #559
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					e2a635b6e5f5942f999213434054e06833c5cb06
 | 
				
			||||||
 | 
					Dont fail when codecov is being finicky
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					666e83cf4fd0eb327f465d5b919a708790f99b00
 | 
				
			||||||
 | 
					Fix JSON objects failing to pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Maybe I should run the whole test suite, not just the things I think
 | 
				
			||||||
 | 
					matter? Nah....
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					741adfa7bb2b950d2851c3f0072d6a4769f22773
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Use blit to draw boxes, add colors.toBlit (#570)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					d13bd2cce8d102ad7f61f557e707d6fe3731bc37
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use arg[0] in all usage printouts (#571)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					74ac5bb3d17e5bee30643a5d6702696600c06229
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Bump to 1.94.0
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[TODO] [M3R1-02] Zero Clue how to reimplement this in fabric.
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					c8aeddedd4ed430f9cb6428676ebb4fa39834182
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Auto-generate monitor models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					I didn't think it was worth it, and then I found myself needing to
 | 
				
			||||||
 | 
					update a dozen of them. The code isn't especially pretty, but it works,
 | 
				
			||||||
 | 
					so that's fine.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Also fixes several issues with us using the wrong texture (closes #572).
 | 
				
			||||||
 | 
					I've put together a wiki page[1] which describes each texture in a
 | 
				
			||||||
 | 
					little more detail.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[1] https://github.com/SquidDev-CC/CC-Tweaked/wiki/Monitor-texture-reference
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					7f90f2f7cadce0d5b9177b16626979591bce8137
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Clean up some examples a little bit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Would be good if they didn't crash and burn on entry :).
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					f194f4fa3a17c48ff1a9088d50063f4a675a23b6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fix epoch documentation to use milliseconds (#580)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					d2a1a00dc43e5b65f6b64111ce76dd3db16c919f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Clear gets an option to reset the palette (#582)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fixes #555.
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					aab0cd34cd64fdf837ff1c3b91a957a25c2cf7f9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Use term.blit on original paint render
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This makes it super speedy, meaning an initial refresh doesn't take ages
 | 
				
			||||||
 | 
					to load.
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					b0651082f472baee8f0fa8ec7ba95f433e2637bb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Cleanup examples for the various modules
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Ignored Documentation Changes, these are locate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					9a749642d294506095e697a3a4345dfe260bd68c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Strict Globals (#583)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					fff8353451451be5ae31e0f63d8e529b127fd186
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Remove extra space (#586)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					486f41f08286ddcfad91d72b83a9361bd9c215cb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fixed length check on function name in `expect` (#589)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					04f9644ae75dafc72da4c4790f334d2e90b03e6f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Allow strings or numbers in textutils.*tabulate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A little dubious, but apparently CC used to support it. This means we're
 | 
				
			||||||
 | 
					consistent with methods like io.write or string.len which accept strings
 | 
				
			||||||
 | 
					or numbers.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fixes #591
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					d4199064ae5ae8023c589f80f12d94e1c6bbc2b5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Make fs.combine accept multiple arguments
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Means we can now do fs.combine("a", "b", "c"). Of course, one may just
 | 
				
			||||||
 | 
					write "a/b/c" in this case, but it's definitely useful elsewhere.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This is /technically/ a breaking change as fs.combine(a, b:gsub(...))
 | 
				
			||||||
 | 
					will no longer function (as gsub returns multiple arguments). However,
 | 
				
			||||||
 | 
					I've done a quick search through GH and my Pastebin archives and can't
 | 
				
			||||||
 | 
					find any programs which would break. Fingers crossed.
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					24af36743d08fcdb58439c52bf587b33ed828263
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Try to handle a turtle being broken while ticked
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Hopefully fixes #585. Hopefully.
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					511eea39a11956c82e2c11a47b2e7cad27f9887e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Remove <!-- -->s in usages
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					826797cbd579e867f0f35f0be44b6a28c8c094a9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Added documentation for global functions (#592)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Didn't port the docs over.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					d83a68f3ff6e3833278a38798d06215293656e85
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Allow $private HTTP rule to block any private IP
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					The config still uses a `blacklist` and `whitelist` array.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					24d3777722812f975d2bc4594437fbbb0431d910
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Added improved help viewer (#595)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Didn't port the lua tests over.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					737b3cb57696fb5517252e7db38bc88ce960b4d8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Don't use capabilities for generic peripherals
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Not ported, related to forges capability system which is not used in the port.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					ea3a16036794357c3a44edffc90fdb652e03881e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Remove a couple of todos
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					bb8f4c624bf87169b73fb631d8250cfc38181e15
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Some sanity checks for get{Direction,Orientation}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Use `getCachedState` instead of forge's `getBlockState` and `contains` instead of `has`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					05c3c8ad3269c9025757f9261e7f609889fb6bdc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Generate docs for generic peripherals
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Skipped everything except some removed whitespace.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					85cf2d5ff1b63010de4661301801aa504e5b9015
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Docs for energy and inventory methods
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					and
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					5865e9c41a0140b9f1acdd2fb095353c467fbb45
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Not sure what irritates me more
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					both skipped because the changes where already ported.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					4ae370b9dbaf1de0ed32a5f32340b1448136c9cc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Merge pull request #606 from TheWireLord/numpadenter-support
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Just lua changes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					f5eb6ce03e0d9bbbf77130452afd4b49e758f7bd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fix copy-paste error in inventory docs
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Skipped because it was already ported.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					663859d2e5a97edefebf9ac36206903d7dd33a3e
 | 
				
			||||||
 | 
					Fix double URL decode
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					abf425dfb5553483cdc51c50a6b7d8b5e44814f4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fix overflow in os.epoch
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					e3a672099c1b5d2c06f9fe4d8ccd024fef0873a2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fix JEI integration with turtle/pocket upgrades
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Skipped because there seems to be no REI integration.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					2f0cae0bc1b038ac092bafa7f65a317537203cd8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Make upgrade recipe requirements a little more lax
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					[TODO] [JUMT-01] Crafting is still messed up, but this port didn't change the behavior.
 | 
				
			||||||
 | 
					[TODO] [JUMT-02] Tag comparison code doesn't need to be that verbose, a simple `isEqual` check would suffice.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					7f9a707f75636d5816f752dc93d7b6b998c61a03
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Bump version to 1.95.0
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Changed the name from CC: Tweaked to CC: Restitched in the changelog and whatsnew files. New version is 1.95.0-beta.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					4af5bcc0b0ff464e7e7428c389d47140580ea7a7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fix serveral 1.15 -> 1.16 issues
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Skipped, changes where already made.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					b8d5a89446ac02fc5b38cc5c0b4805de9d11a7d5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Add explicit @module annotation
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Tiny lua change.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					8b17ec76a8e94251803e6f4ba4e65970c6a70b7f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fixed missing argument names in file handle docs (#632)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					A java doc change.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					e4b0a5b3ce035eb23feb4191432fc49af5772c5b
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2020 -> 2021
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					A huge amount of changes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					542b66c79a9b08e080c39c9a73d74ffe71c0106a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Add back command computer block drops
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Didn't port some forge-related changes, but it works.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					dd6f97622e6c18ce0d8988da6a5bede45c94ca5d
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Prevent reflection errors crashing the game
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					92be0126df63927d07fc695945f8b98e328f945a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fix disk recipes
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Dye recipes actually work now.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					1edb7288b974aec3764b0a820edce7e9eee38e66
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Merge branch 'mc-1.15.x' into mc-1.16.x
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					New version: 1.95.1.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					41226371f3b5fd35f48b6d39c2e8e0c277125b21
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Add isReadOnly to fs.attributes (#639)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Also changed some lua test files, but made the changes anyway.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					b2e54014869fac4b819b01b6c24e550ca113ce8a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Added Numpad Enter Support in rom lua programs. (#657)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Just lua changes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					247c05305d106af430fcdaee41371a152bf7c38c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fix problem with RepeatArgumentType
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					c864576619751077a0d8ac1a18123e14b095ec03
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fix impostor recipes for disks
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					[TODO] [JUMT-03] REI still shows white disks, probably because it doesn' show nbt items.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					c5694ea9661c7a40021ebd280c378bd7bdc56988
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Merge branch 'mc-1.15.x' into mc-1.16.x
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Update to 1.16.4.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					1f84480a80677cfaaf19d319290f5b44635eba47
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Make rightAlt only close menu, never open it. (#672)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Lua changes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					1255bd00fd21247a50046020d7d9a396f66bc6bd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Fix mounts being usable after a disk is ejected
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Reverted a lot of code style changes made by Zundrel, so the diffs are huge.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					b90611b4b4c176ec1c80df002cc4ac36aa0c4dc8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Preserve registration order of upgrades
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Again, a huge diff because of code style changes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					8494ba8ce29cd8d7b9105eef497fe3fe3f89d350
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Improve UX when a resource mount cannot be found
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
@@ -1,55 +0,0 @@
 | 
				
			|||||||
import { readFileSync, promises as fs } from "fs";
 | 
					 | 
				
			||||||
import path from "path";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import typescript from "@rollup/plugin-typescript";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const input = "src/web";
 | 
					 | 
				
			||||||
const requirejs = readFileSync("node_modules/requirejs/require.js");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
    input: [`${input}/index.tsx`],
 | 
					 | 
				
			||||||
    output: {
 | 
					 | 
				
			||||||
        file: "build/rollup/index.js",
 | 
					 | 
				
			||||||
        // We bundle requirejs (and config) into the header. It's rather gross
 | 
					 | 
				
			||||||
        // but also works reasonably well.
 | 
					 | 
				
			||||||
        banner: `${requirejs}\nrequire.config({ paths: { copycat: "https://copy-cat.squiddev.cc" } });`,
 | 
					 | 
				
			||||||
        format: "amd",
 | 
					 | 
				
			||||||
        preferConst: true,
 | 
					 | 
				
			||||||
        amd: {
 | 
					 | 
				
			||||||
            define: "require",
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    context: "window",
 | 
					 | 
				
			||||||
    external: ["copycat/embed"],
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    plugins: [
 | 
					 | 
				
			||||||
        typescript(),
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            name: "cc-tweaked",
 | 
					 | 
				
			||||||
            async options(options) {
 | 
					 | 
				
			||||||
                // Generate .d.ts files for all /mount files. This is the worst way to do it,
 | 
					 | 
				
			||||||
                // but we need to run before the TS pass.
 | 
					 | 
				
			||||||
                const template = "declare const contents : string;\nexport default contents;\n";
 | 
					 | 
				
			||||||
                const files = await fs.readdir(`${input}/mount`);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                await Promise.all(files
 | 
					 | 
				
			||||||
                    .filter(x => path.extname(x) !== ".ts")
 | 
					 | 
				
			||||||
                    .map(async file => {
 | 
					 | 
				
			||||||
                        const path = `${input}/mount/${file}.d.ts`;
 | 
					 | 
				
			||||||
                        const contents = await fs.readFile(path, { encoding: "utf-8" }).catch(() => "");
 | 
					 | 
				
			||||||
                        if (contents !== template) await fs.writeFile(path, template);
 | 
					 | 
				
			||||||
                    })
 | 
					 | 
				
			||||||
                );
 | 
					 | 
				
			||||||
                return options;
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            async transform(code, file) {
 | 
					 | 
				
			||||||
                // Allow loading files in /mount.
 | 
					 | 
				
			||||||
                const ext = path.extname(file);
 | 
					 | 
				
			||||||
                return ext != '.tsx' && ext != '.ts' && path.dirname(file) === path.resolve(`${input}/mount`)
 | 
					 | 
				
			||||||
                    ? `export default ${JSON.stringify(code)};\n`
 | 
					 | 
				
			||||||
                    : null;
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1 +1,11 @@
 | 
				
			|||||||
rootProject.name = "cc-tweaked-${mc_version}"
 | 
					pluginManagement {
 | 
				
			||||||
 | 
					    repositories {
 | 
				
			||||||
 | 
					        maven {
 | 
				
			||||||
 | 
					            name = 'Fabric'
 | 
				
			||||||
 | 
					            url = 'https://maven.fabricmc.net/'
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        gradlePluginPortal()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					rootProject.name = "cc-restiched"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,49 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "variants": {
 | 
					 | 
				
			||||||
    "facing=north,state=off": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_advanced_off"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,state=off": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_advanced_off",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,state=off": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_advanced_off",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,state=off": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_advanced_off",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,state=on": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_advanced_on"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,state=on": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_advanced_on",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,state=on": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_advanced_on",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,state=on": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_advanced_on",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,state=blinking": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_advanced_blinking"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,state=blinking": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_advanced_blinking",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,state=blinking": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_advanced_blinking",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,state=blinking": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_advanced_blinking",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,49 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "variants": {
 | 
					 | 
				
			||||||
    "facing=north,state=off": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_command_off"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,state=off": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_command_off",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,state=off": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_command_off",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,state=off": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_command_off",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,state=on": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_command_on"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,state=on": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_command_on",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,state=on": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_command_on",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,state=on": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_command_on",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,state=blinking": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_command_blinking"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,state=blinking": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_command_blinking",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,state=blinking": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_command_blinking",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,state=blinking": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_command_blinking",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,49 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "variants": {
 | 
					 | 
				
			||||||
    "facing=north,state=off": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_normal_off"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,state=off": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_normal_off",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,state=off": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_normal_off",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,state=off": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_normal_off",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,state=on": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_normal_on"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,state=on": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_normal_on",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,state=on": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_normal_on",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,state=on": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_normal_on",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,state=blinking": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_normal_blinking"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,state=blinking": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_normal_blinking",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,state=blinking": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_normal_blinking",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,state=blinking": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/computer_normal_blinking",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,852 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "variants": {
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_l",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_l",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_l",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_l",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_l",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_l",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_l",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_l",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_l"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_l",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_l",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_l",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_r",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_r",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_r",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_r",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_r",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_r",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_r",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_r",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_r"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_r",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_r",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_r",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lr",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lr",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lr",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lr",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lr",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lr",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lr",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lr",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lr"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lr",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lr",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lr",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_u",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_u",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_u",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_u",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_u",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_u",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_u",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_u",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_u"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_u",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_u",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_u",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_d",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_d",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_d",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_d",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_d",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_d",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_d",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_d",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_d"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_d",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_d",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_d",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ud",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ud",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ud"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ud",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ud",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ud",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rd",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rd",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rd",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rd",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rd",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rd",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rd",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rd",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rd"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rd",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rd",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rd",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ld",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ld",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ld",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ld",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ld",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ld",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ld",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ld",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ld"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ld",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ld",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ld",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ru",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ru",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ru",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ru",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ru",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ru",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ru",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ru",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ru"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ru",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ru",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_ru",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lu",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lu",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lu",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lu",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lu",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lu",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lu",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lu",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lu"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lu",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lu",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lu",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrd",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrd",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrd",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrd",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrd",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrd",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrd",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrd",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrd"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrd",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrd",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrd",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rud",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rud",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rud"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rud",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rud",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_rud",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lud",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lud",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lud"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lud",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lud",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lud",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lru",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lru",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lru",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lru",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lru",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lru",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lru",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lru",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lru"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lru",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lru",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lru",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrud",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrud",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrud"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrud",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrud",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_advanced_lrud",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,852 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "variants": {
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=none": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_l",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_l",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_l",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_l",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_l",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_l",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_l",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_l",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_l"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_l",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_l",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=l": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_l",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_r",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_r",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_r",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_r",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_r",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_r",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_r",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_r",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_r"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_r",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_r",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=r": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_r",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lr",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lr",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lr",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lr",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lr",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lr",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lr",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lr",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lr"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lr",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lr",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=lr": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lr",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_u",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_u",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_u",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_u",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_u",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_u",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_u",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_u",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_u"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_u",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_u",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=u": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_u",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_d",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_d",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_d",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_d",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_d",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_d",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_d",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_d",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_d"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_d",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_d",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=d": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_d",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ud",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ud",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ud"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ud",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ud",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=ud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ud",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rd",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rd",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rd",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rd",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rd",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rd",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rd",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rd",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rd"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rd",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rd",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=rd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rd",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ld",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ld",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ld",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ld",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ld",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ld",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ld",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ld",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ld"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ld",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ld",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=ld": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ld",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ru",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ru",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ru",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ru",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ru",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ru",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ru",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ru",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ru"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ru",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ru",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=ru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_ru",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lu",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lu",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lu",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lu",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lu",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lu",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lu",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lu",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lu"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lu",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lu",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=lu": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lu",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrd",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrd",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrd",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrd",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrd",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrd",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrd",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrd",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrd"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrd",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrd",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=lrd": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrd",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rud",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rud",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rud"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rud",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rud",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=rud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_rud",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lud",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lud",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lud"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lud",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lud",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=lud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lud",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lru",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lru",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lru",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lru",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lru",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lru",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lru",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lru",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lru"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lru",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lru",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=lru": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lru",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=down,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrud",
 | 
					 | 
				
			||||||
      "x": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=down,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=down,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=down,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrud",
 | 
					 | 
				
			||||||
      "x": 90,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=up,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrud",
 | 
					 | 
				
			||||||
      "x": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=up,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=up,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=up,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrud",
 | 
					 | 
				
			||||||
      "x": 270,
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=north,orientation=north,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrud"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=south,orientation=north,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrud",
 | 
					 | 
				
			||||||
      "y": 180
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=west,orientation=north,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrud",
 | 
					 | 
				
			||||||
      "y": 270
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "facing=east,orientation=north,state=lrud": {
 | 
					 | 
				
			||||||
      "model": "computercraft:block/monitor_normal_lrud",
 | 
					 | 
				
			||||||
      "y": 90
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "parent": "block/orientable",
 | 
					 | 
				
			||||||
  "textures": {
 | 
					 | 
				
			||||||
    "top": "computercraft:block/computer_advanced_top",
 | 
					 | 
				
			||||||
    "side": "computercraft:block/computer_advanced_side",
 | 
					 | 
				
			||||||
    "front": "computercraft:block/computer_advanced_front_blink"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "parent": "block/orientable",
 | 
					 | 
				
			||||||
  "textures": {
 | 
					 | 
				
			||||||
    "top": "computercraft:block/computer_advanced_top",
 | 
					 | 
				
			||||||
    "side": "computercraft:block/computer_advanced_side",
 | 
					 | 
				
			||||||
    "front": "computercraft:block/computer_advanced_front"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "parent": "block/orientable",
 | 
					 | 
				
			||||||
  "textures": {
 | 
					 | 
				
			||||||
    "top": "computercraft:block/computer_advanced_top",
 | 
					 | 
				
			||||||
    "side": "computercraft:block/computer_advanced_side",
 | 
					 | 
				
			||||||
    "front": "computercraft:block/computer_advanced_front_on"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "parent": "block/orientable",
 | 
					 | 
				
			||||||
  "textures": {
 | 
					 | 
				
			||||||
    "top": "computercraft:block/computer_command_top",
 | 
					 | 
				
			||||||
    "side": "computercraft:block/computer_command_side",
 | 
					 | 
				
			||||||
    "front": "computercraft:block/computer_command_front_blink"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "parent": "block/orientable",
 | 
					 | 
				
			||||||
  "textures": {
 | 
					 | 
				
			||||||
    "top": "computercraft:block/computer_command_top",
 | 
					 | 
				
			||||||
    "side": "computercraft:block/computer_command_side",
 | 
					 | 
				
			||||||
    "front": "computercraft:block/computer_command_front"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "parent": "block/orientable",
 | 
					 | 
				
			||||||
  "textures": {
 | 
					 | 
				
			||||||
    "top": "computercraft:block/computer_command_top",
 | 
					 | 
				
			||||||
    "side": "computercraft:block/computer_command_side",
 | 
					 | 
				
			||||||
    "front": "computercraft:block/computer_command_front_on"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "parent": "block/orientable",
 | 
					 | 
				
			||||||
  "textures": {
 | 
					 | 
				
			||||||
    "top": "computercraft:block/computer_normal_top",
 | 
					 | 
				
			||||||
    "side": "computercraft:block/computer_normal_side",
 | 
					 | 
				
			||||||
    "front": "computercraft:block/computer_normal_front_blink"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "parent": "block/orientable",
 | 
					 | 
				
			||||||
  "textures": {
 | 
					 | 
				
			||||||
    "top": "computercraft:block/computer_normal_top",
 | 
					 | 
				
			||||||
    "side": "computercraft:block/computer_normal_side",
 | 
					 | 
				
			||||||
    "front": "computercraft:block/computer_normal_front"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,8 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "parent": "block/orientable",
 | 
					 | 
				
			||||||
  "textures": {
 | 
					 | 
				
			||||||
    "top": "computercraft:block/computer_normal_top",
 | 
					 | 
				
			||||||
    "side": "computercraft:block/computer_normal_side",
 | 
					 | 
				
			||||||
    "front": "computercraft:block/computer_normal_front_on"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "parent": "computercraft:block/monitor_base",
 | 
					 | 
				
			||||||
  "textures": {
 | 
					 | 
				
			||||||
    "front": "computercraft:block/monitor_advanced_16",
 | 
					 | 
				
			||||||
    "side": "computercraft:block/monitor_advanced_4",
 | 
					 | 
				
			||||||
    "top": "computercraft:block/monitor_advanced_0",
 | 
					 | 
				
			||||||
    "back": "computercraft:block/monitor_advanced_32"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "parent": "computercraft:block/monitor_base",
 | 
					 | 
				
			||||||
  "textures": {
 | 
					 | 
				
			||||||
    "front": "computercraft:block/monitor_advanced_20",
 | 
					 | 
				
			||||||
    "side": "computercraft:block/monitor_advanced_7",
 | 
					 | 
				
			||||||
    "top": "computercraft:block/monitor_advanced_0",
 | 
					 | 
				
			||||||
    "back": "computercraft:block/monitor_advanced_36"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "parent": "computercraft:block/monitor_base",
 | 
					 | 
				
			||||||
  "textures": {
 | 
					 | 
				
			||||||
    "front": "computercraft:block/monitor_advanced_19",
 | 
					 | 
				
			||||||
    "side": "computercraft:block/monitor_advanced_4",
 | 
					 | 
				
			||||||
    "top": "computercraft:block/monitor_advanced_1",
 | 
					 | 
				
			||||||
    "back": "computercraft:block/monitor_advanced_33"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "parent": "computercraft:block/monitor_base",
 | 
					 | 
				
			||||||
  "textures": {
 | 
					 | 
				
			||||||
    "front": "computercraft:block/monitor_advanced_31",
 | 
					 | 
				
			||||||
    "side": "computercraft:block/monitor_advanced_7",
 | 
					 | 
				
			||||||
    "top": "computercraft:block/monitor_advanced_1",
 | 
					 | 
				
			||||||
    "back": "computercraft:block/monitor_advanced_45"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "parent": "computercraft:block/monitor_base",
 | 
					 | 
				
			||||||
  "textures": {
 | 
					 | 
				
			||||||
    "front": "computercraft:block/monitor_advanced_18",
 | 
					 | 
				
			||||||
    "side": "computercraft:block/monitor_advanced_4",
 | 
					 | 
				
			||||||
    "top": "computercraft:block/monitor_advanced_2",
 | 
					 | 
				
			||||||
    "back": "computercraft:block/monitor_advanced_34"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "parent": "computercraft:block/monitor_base",
 | 
					 | 
				
			||||||
  "textures": {
 | 
					 | 
				
			||||||
    "front": "computercraft:block/monitor_advanced_30",
 | 
					 | 
				
			||||||
    "side": "computercraft:block/monitor_advanced_7",
 | 
					 | 
				
			||||||
    "top": "computercraft:block/monitor_advanced_2",
 | 
					 | 
				
			||||||
    "back": "computercraft:block/monitor_advanced_46"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "parent": "computercraft:block/monitor_base",
 | 
					 | 
				
			||||||
  "textures": {
 | 
					 | 
				
			||||||
    "front": "computercraft:block/monitor_advanced_24",
 | 
					 | 
				
			||||||
    "side": "computercraft:block/monitor_advanced_5",
 | 
					 | 
				
			||||||
    "top": "computercraft:block/monitor_advanced_2",
 | 
					 | 
				
			||||||
    "back": "computercraft:block/monitor_advanced_40"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "parent": "computercraft:block/monitor_base",
 | 
					 | 
				
			||||||
  "textures": {
 | 
					 | 
				
			||||||
    "front": "computercraft:block/monitor_advanced_27",
 | 
					 | 
				
			||||||
    "side": "computercraft:block/monitor_advanced_6",
 | 
					 | 
				
			||||||
    "top": "computercraft:block/monitor_advanced_2",
 | 
					 | 
				
			||||||
    "back": "computercraft:block/monitor_advanced_43"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user