Compare commits
614 Commits
Author | SHA1 | Date |
---|---|---|
yutyo | 7809f9b227 | |
Wuzzy | 600eadedea | |
Wuzzy | 02d7f20cc9 | |
Wuzzy | 6ce3278dd4 | |
Wuzzy | 97ab2e7b38 | |
Wuzzy | da1c3f635c | |
Wuzzy | e9f259881f | |
Wuzzy | ed63374480 | |
Wuzzy | 73d93ae969 | |
Wuzzy | a98dafb171 | |
Wuzzy | baa02e19e1 | |
Wuzzy | 2237cf66cb | |
David McMackins II | 882937a1ab | |
Wuzzy | b56ead7a23 | |
Wuzzy | f5268ea598 | |
Wuzzy | 24832c534f | |
Wuzzy | d5111dfb66 | |
Wuzzy | 7243a25fe6 | |
Wuzzy | 3cf32c38c5 | |
Wuzzy | fb9d0f7a7c | |
wuniversales | 3772dd51cc | |
Wuzzy | 2569eae5d8 | |
Wuzzy | 73dc0a64b5 | |
Wuzzy | 5a03ce6dac | |
Wuzzy | f0ba364120 | |
Wuzzy | 28b2085492 | |
Wuzzy | 6b529e1204 | |
Wuzzy | 7ee2340f5c | |
Wuzzy | 312b5aeb73 | |
Wuzzy | feba60cad8 | |
Wuzzy | 03a5519d01 | |
Wuzzy | 098bc3c7c7 | |
Wuzzy | 9ef313d0a1 | |
Wuzzy | 8adf6298a7 | |
Wuzzy | 070e928bf0 | |
Wuzzy | 5053dde5f0 | |
Wuzzy | 0fbb252af6 | |
Wuzzy | 242b880c4f | |
Wuzzy | 9422989ac6 | |
Wuzzy | a845f0313d | |
Wuzzy | 6761ebdae5 | |
Wuzzy | 60effa71b4 | |
Wuzzy | 1e5f3ee610 | |
Wuzzy | c6d6a2ce26 | |
Wuzzy | 81fd3fad40 | |
Wuzzy | f85a6b5042 | |
Wuzzy | 96b30b918c | |
Wuzzy | 1ea2b09ecb | |
Wuzzy | 3bcb868f8b | |
Wuzzy | 03ad3cca29 | |
Wuzzy | 0e867e5247 | |
Wuzzy | 4deb6eec20 | |
Wuzzy | 2554c6d597 | |
Wuzzy | cbda2ef326 | |
Wuzzy | 714634f4a0 | |
Wuzzy | d3d227d46b | |
Wuzzy | 4cb5b26fa9 | |
Wuzzy | efb97d59a5 | |
Wuzzy | 98e87fd5db | |
Wuzzy | a375548992 | |
wuniversales | f93d3a897e | |
Wuzzy | fbd5374085 | |
Wuzzy | 4466383122 | |
Wuzzy | 401382106f | |
Wuzzy | 4ece91fde4 | |
Wuzzy | 4926f8d443 | |
Wuzzy | 6096b8dd9a | |
Wuzzy | 589b750d0a | |
Wuzzy | e4fb7ae533 | |
Wuzzy | ba74546d48 | |
Wuzzy | 71cee9920a | |
Wuzzy | 604e1c4d19 | |
Wuzzy | 3118673116 | |
Wuzzy | 565806558c | |
Wuzzy | 6426e55746 | |
Wuzzy | d88fa0c438 | |
Wuzzy | 329452d5ce | |
Wuzzy | 5729d70814 | |
Wuzzy | bfc5670f09 | |
Wuzzy | 012dd0b86a | |
Wuzzy | 7ba3616c77 | |
Wuzzy | 460e7c0c67 | |
Wuzzy | 364a4152ac | |
Wuzzy | 89afec17b1 | |
Wuzzy | a52976a918 | |
Wuzzy | ab4e46f97b | |
Wuzzy | fb251db925 | |
Wuzzy | edab0be8f5 | |
Wuzzy | ef077fed72 | |
Wuzzy | f700463c4f | |
Wuzzy | ae7615c557 | |
Wuzzy | 97d293f8b4 | |
Wuzzy | 33acd2327f | |
Wuzzy | bef99ac211 | |
Wuzzy | e3b68c4364 | |
Wuzzy | 2e6610da42 | |
Wuzzy | 988ca6ffe7 | |
Wuzzy | dcc14d1f3f | |
Wuzzy | 023f70ee1c | |
Wuzzy | 81ca7469d7 | |
Wuzzy | 004013c3a4 | |
Wuzzy | 113a49da41 | |
Wuzzy | 9499076ac8 | |
Wuzzy | 641921f4c7 | |
Wuzzy | bcffcdf003 | |
Wuzzy | e6133ac670 | |
Wuzzy | 1ab41a494b | |
Wuzzy | c6a8cbdb59 | |
Wuzzy | f4a06d6217 | |
Wuzzy | bed0849bb0 | |
Wuzzy | 2ef5f0232d | |
Wuzzy | 377bf31c5d | |
Wuzzy | 3836f1b7e9 | |
wuniversales | 15481cb24d | |
Wuzzy | 04c8a08cc4 | |
Wuzzy | 9f344b4307 | |
Wuzzy | 1d2da1f01a | |
Wuzzy | 9dc9c12f29 | |
Wuzzy | 74b79d130b | |
Wuzzy | d923f71c92 | |
Wuzzy | 61e148ac2e | |
Wuzzy | 834c8cbc3a | |
Wuzzy | fcf46b3423 | |
Wuzzy | c234b273ad | |
Wuzzy | be04de084b | |
Wuzzy | 8be35bae53 | |
Wuzzy | bddb8f1136 | |
Wuzzy | d38e0a0b00 | |
Wuzzy | f7fb83891a | |
Wuzzy | 9326a76973 | |
Wuzzy | fff1949804 | |
Wuzzy | 3788b66b47 | |
Wuzzy | bc7b86b61a | |
Wuzzy | 112574792d | |
Wuzzy | 73e8ee8a68 | |
Wuzzy | 3dcd986863 | |
Wuzzy | 87ac0c952c | |
Wuzzy | e569885fab | |
Wuzzy | 9b8d6c4cec | |
aldum | 82f851e20d | |
Wuzzy | 0ae2c5b25f | |
Wuzzy | 1210d8c9a7 | |
Wuzzy | 7a870d0ead | |
Wuzzy | f2b7392a30 | |
Wuzzy | 05152589fa | |
Wuzzy | 01eb39b62f | |
Wuzzy | 1fc2ba6879 | |
Wuzzy | 90298821a3 | |
Wuzzy | 8c0bea7dad | |
Wuzzy | b77307b7ac | |
Wuzzy | f691b31423 | |
Wuzzy | 5d8c068749 | |
Wuzzy | 625730e040 | |
Wuzzy | d29c4bb795 | |
Wuzzy | a03cc0604e | |
Wuzzy | bbc5f2a0d9 | |
Wuzzy | 9fdbb35f24 | |
Wuzzy | 87449b5719 | |
Wuzzy | ab038ddd60 | |
Wuzzy | 305145ca1c | |
Wuzzy | b7406ed3d5 | |
Wuzzy | f74a502979 | |
Wuzzy | 8b6dc30943 | |
Wuzzy | e0e73b8ee8 | |
Wuzzy | 85c058125c | |
Wuzzy | 286009cbd7 | |
Wuzzy | 3658cfc0f1 | |
Wuzzy | ee5e50f139 | |
Wuzzy | d1f3856de8 | |
Wuzzy | 2e9efe51e8 | |
Wuzzy | 40e681a566 | |
Wuzzy | 5c953b1dc0 | |
Wuzzy | b81396c03f | |
Wuzzy | 40a55729ca | |
Wuzzy | 09c1f44a65 | |
Wuzzy | 5c70296e8f | |
Wuzzy | a714751f8b | |
Wuzzy | 4dcbe75e84 | |
Wuzzy | cf1df56b79 | |
Wuzzy | 8b3ecb9321 | |
Wuzzy | 1e3cfb6040 | |
Wuzzy | e8614d7b27 | |
Wuzzy | b92aec71af | |
Wuzzy | c7aaf49e22 | |
Wuzzy | 39670e1f79 | |
Wuzzy | 59964279b7 | |
Wuzzy | 82b9c7d474 | |
Wuzzy | 085e6f306a | |
Wuzzy | bab4529e4d | |
Wuzzy | a5b4a261dc | |
Wuzzy | 4cc51a55c2 | |
Wuzzy | 29b20a51bc | |
Wuzzy | 5b956c1c47 | |
Wuzzy | 862e3141d9 | |
Wuzzy | 92ef7c3b9a | |
Wuzzy | 44c95084ab | |
Wuzzy | 101c9b7322 | |
Wuzzy | f4888a42a9 | |
Wuzzy | 7f70acc8a4 | |
Wuzzy | 41d7e513e7 | |
Wuzzy | 741b32e8d0 | |
Wuzzy | 1971b3c5a8 | |
Wuzzy | aaedf6517a | |
Wuzzy | b9cc66d3db | |
Wuzzy | 5f2cc506f0 | |
Wuzzy | affb984c56 | |
Wuzzy | b3829eaf9b | |
Wuzzy | c90f693c06 | |
Wuzzy | c149f5ca3c | |
Wuzzy | 40453d597b | |
Wuzzy | 3e3ed630e5 | |
Wuzzy | d4344bbaf8 | |
Wuzzy | 01288eff62 | |
Wuzzy | 9dfe584cd1 | |
Wuzzy | 62096c723a | |
Wuzzy | 6002cd0af5 | |
Wuzzy | 9c55b6c9c9 | |
Wuzzy | 325801efd7 | |
Wuzzy | 8e224d0bd9 | |
Wuzzy | 4a7bb86803 | |
Wuzzy | cfa77288c1 | |
Wuzzy | d21e959055 | |
Wuzzy | b5133c0c4a | |
Wuzzy | 1a02ccd36f | |
Wuzzy | 7df94278cf | |
Wuzzy | 2393c68448 | |
Wuzzy | ec50b19fa0 | |
Wuzzy | 5b4f33c8f1 | |
Wuzzy | 506e039fc5 | |
Wuzzy | febcb96bb0 | |
Wuzzy | 231493cb1b | |
Wuzzy | 2e09febaae | |
Wuzzy | f91619cae1 | |
Wuzzy | 753acdf272 | |
Wuzzy | 57e14b8106 | |
Wuzzy | a177d3cbba | |
Wuzzy | 0d3b8e11c3 | |
Wuzzy | 2ff5bafd91 | |
Wuzzy | 046f9ab223 | |
Wuzzy | e85c999e4c | |
Wuzzy | e09a72ed59 | |
Wuzzy | 47f7b21190 | |
Wuzzy | f04170d66b | |
Wuzzy | 28505885f2 | |
Wuzzy | a1ab325920 | |
ZedekThePD | b71cf5e9c2 | |
Wuzzy | 4e08e978f5 | |
Wuzzy | 31fbe97e4e | |
Wuzzy | 26ac17f1ad | |
Wuzzy | da47d7917c | |
Wuzzy | ad13c71bf1 | |
Wuzzy | 33ef45245c | |
Wuzzy | 2528463db6 | |
Wuzzy | 643b1e7933 | |
Wuzzy | bbcab7275e | |
Wuzzy | d25922b325 | |
Wuzzy | f218180eaa | |
Wuzzy | d502ac3bec | |
Wuzzy | 644187e204 | |
Wuzzy | 5fd746710f | |
Wuzzy | eeac1435f9 | |
Wuzzy | 3de818d2c2 | |
Wuzzy | 5868790b4f | |
Wuzzy | 1e354f63c0 | |
Wuzzy | 1c7e350095 | |
Wuzzy | 9e31c2b62b | |
Wuzzy | e2fb3a562d | |
Wuzzy | 84ff24f8ed | |
Wuzzy | 8a2e6d434d | |
Wuzzy | 7471836c2d | |
Wuzzy | 7175ffb975 | |
Jared Moody | 89ba84a456 | |
Wuzzy | 5f1973aecd | |
Wuzzy | 05e6362303 | |
Wuzzy | f6f259dce0 | |
Wuzzy | fd089b2470 | |
Wuzzy | 55171a12c6 | |
Wuzzy | 219b2464a1 | |
Wuzzy | c9b642a706 | |
Wuzzy | 7b24ede582 | |
Wuzzy | 6d5bfacb8c | |
Wuzzy | c6903b48f1 | |
Wuzzy | 0e733f1677 | |
Wuzzy | 5ed278717f | |
Wuzzy | 8b9ac5c6a6 | |
Wuzzy | d9424ad82e | |
Wuzzy | 5bd19c03f6 | |
Wuzzy | 3322366457 | |
Wuzzy | 5198f5cdec | |
Wuzzy | da149d5a58 | |
Wuzzy | b3e1df7e9b | |
Wuzzy | 4a7aaa9024 | |
Wuzzy | a9ed14c4af | |
Wuzzy | 041839fd1a | |
Wuzzy | 200cbf033a | |
Wuzzy | aae360db4c | |
Wuzzy | f9e46b914d | |
Wuzzy | b71c9204ec | |
Wuzzy | 14d4bec8a9 | |
Wuzzy | 40b5c5c2a5 | |
Wuzzy | d9d1e5c08c | |
Wuzzy | 5ba4f1b899 | |
Wuzzy | 21317aa7c7 | |
Wuzzy | dfe68e6820 | |
Wuzzy | 67f33c9256 | |
Wuzzy | 1aac4713a4 | |
Wuzzy | e64ef6e254 | |
Wuzzy | 748b5d4a4b | |
Wuzzy | 76ed6ff826 | |
Wuzzy | a8a875a7b4 | |
Wuzzy | 31ae28e66e | |
Wuzzy | 25e2bd106f | |
Wuzzy | 2913acc6e9 | |
Wuzzy | 30a954b874 | |
Wuzzy | e633f15eed | |
Wuzzy | df7acfc8ae | |
Wuzzy | b6c3cc0ed7 | |
Wuzzy | 3cba55703a | |
Wuzzy | b3bbf38fd7 | |
Wuzzy | e88e95d564 | |
Wuzzy | 44bd5dba6c | |
Wuzzy | 9416305fa6 | |
Wuzzy | 8618b42bc7 | |
Wuzzy | dae4dc6924 | |
Wuzzy | cf47e7de9e | |
Wuzzy | 719242c840 | |
Wuzzy | 2fecf0336c | |
Wuzzy | 955638bccd | |
Wuzzy | 915ac2da93 | |
Wuzzy | 18069b069c | |
Wuzzy | 5dd002b598 | |
Wuzzy | 06be98a676 | |
Wuzzy | 055d6ecc96 | |
Wuzzy | c7908cc020 | |
Wuzzy | 276af8a1ea | |
Wuzzy | 2423acb297 | |
Wuzzy | ed336829b4 | |
Wuzzy | aced401c6c | |
Wuzzy | 2627742b36 | |
Nicholas Niro | 995024b47b | |
Nicholas Niro | c7d111219d | |
Wuzzy | 2478d8817e | |
Wuzzy | 1cbee9de18 | |
Wuzzy | f67c302c3d | |
Wuzzy | 02ed4b52c4 | |
Wuzzy | ce7015bb35 | |
Wuzzy | 248a635749 | |
Rootyjr | a765d3dd4f | |
Rootyjr | d11b089bac | |
Rootyjr | 58d9fb874d | |
Rootyjr | 37af2dbba1 | |
Rootyjr | 48b73f5f2e | |
Rootyjr | c50958a640 | |
Rootyjr | 3da1c551a1 | |
Rootyjr | 379dd847ee | |
Rootyjr | 839d74329c | |
aligator | 1d5cdfe544 | |
Rootyjr | b1f201f538 | |
Wuzzy | d4facaf503 | |
Wuzzy | c623860af8 | |
Wuzzy | 36adba2e0b | |
Wuzzy | 6cd1fb1119 | |
Wuzzy | 6e9d712c5e | |
Wuzzy | 23630bbac0 | |
Wuzzy | 8830edfdf9 | |
Wuzzy | 80ee8172fe | |
Wuzzy | b0c457f2ec | |
Wuzzy | 1ed1bdfadb | |
Wuzzy | 6842c42625 | |
Wuzzy | ab81dfb4b4 | |
Wuzzy | fbba40fe5c | |
Wuzzy | a7ceb2462a | |
Wuzzy | 219ec1ddcb | |
Wuzzy | 2203d0df53 | |
Wuzzy | 8533ff0b75 | |
Wuzzy | c6e671376d | |
Oil_boi | ba97dfd02f | |
Wuzzy | 719f7b5b77 | |
Wuzzy | 42a7baf4b4 | |
Wuzzy | 6188d7b528 | |
Wuzzy | 7e9a9821c9 | |
Wuzzy | 5b6cb0a441 | |
Wuzzy | d0a6244be9 | |
Wuzzy | 418368fbc5 | |
Wuzzy | 967905264d | |
Wuzzy | c5db9987c3 | |
Wuzzy | 435ae85d68 | |
Wuzzy | 1b7c41fc81 | |
Wuzzy | 2d34a2982a | |
Wuzzy | 2f346cfc1d | |
Wuzzy | 15880db548 | |
Wuzzy | 5c1717971b | |
Wuzzy | 2582350504 | |
Wuzzy | 7604b77dd6 | |
Wuzzy | b404e8b5bd | |
Wuzzy | 25048050a0 | |
Wuzzy | 3a5df885e9 | |
Wuzzy | 5caa4b3659 | |
Wuzzy | 423d5f8ab8 | |
Wuzzy | 8636b94c74 | |
Wuzzy | ea23f05c22 | |
Wuzzy | 7df5ef097c | |
Wuzzy | a54abc7de9 | |
Wuzzy | 1b24b02e31 | |
Wuzzy | 833f58ff4e | |
Wuzzy | c78b1d1354 | |
Wuzzy | c49efcf9ad | |
Wuzzy | 5647fbf6e0 | |
Wuzzy | 1719c3e4e1 | |
Wuzzy | b80ece51cb | |
Wuzzy | 65a61398b5 | |
Wuzzy | 8019315eaa | |
Wuzzy | d12356794f | |
Wuzzy | 262457f240 | |
Wuzzy | ae5f5fe3b7 | |
Wuzzy | 78fc9565c0 | |
Wuzzy | 579e526615 | |
Wuzzy | 267cf5c4a6 | |
Wuzzy | 52e1c9e274 | |
Wuzzy | 70498cf529 | |
Wuzzy | 40923f83fd | |
Wuzzy | da5b2443f2 | |
Wuzzy | aaf8801c06 | |
Wuzzy | 8dd3c9224f | |
Wuzzy | b44f4f456d | |
Wuzzy | 95d2465901 | |
Wuzzy | e2cc0e428d | |
Wuzzy | 23ccd197ee | |
Wuzzy | d191c3ac48 | |
Wuzzy | 6511394b69 | |
Wuzzy | 78f4043fb9 | |
Wuzzy | 2237aae6c3 | |
Wuzzy | c3968209f6 | |
Wuzzy | 058f46043f | |
Wuzzy | 49f447ba64 | |
Wuzzy | b0acd134ca | |
Wuzzy | 6fbd47cde6 | |
Wuzzy | 9cef74c03b | |
Wuzzy | 9d7f4f6544 | |
Wuzzy | 805fa76282 | |
Wuzzy | 550fa39d86 | |
Wuzzy | 522a2b9a73 | |
Wuzzy | 7aaafdca03 | |
Wuzzy | 8cfcbea9cb | |
Wuzzy | 8ee1521f14 | |
Wuzzy | cf9e440019 | |
Wuzzy | d45d53e455 | |
Wuzzy | 03db150175 | |
Wuzzy | af4aa6c2ec | |
Wuzzy | 9385458632 | |
Wuzzy | c12a4b795e | |
Wuzzy | 1c27cbe4f6 | |
Wuzzy | 3f85e1c0da | |
Wuzzy | f5cd9e3b98 | |
Wuzzy | 661e10e992 | |
Wuzzy | 81ca79e85c | |
Wuzzy | 77ab44217a | |
Wuzzy | 86e5eb748f | |
Wuzzy | f5c1e19781 | |
Wuzzy | e764851775 | |
Wuzzy | 53eabf3737 | |
Wuzzy | a5fb218afe | |
Wuzzy | 93e34d1d03 | |
Wuzzy | 62e1186827 | |
Wuzzy | a51bcff1b9 | |
Wuzzy | 702755b99e | |
Wuzzy | daeb04485e | |
Wuzzy | 0c8db3e556 | |
Wuzzy | 41842c73c6 | |
Wuzzy | 28c0c9d196 | |
Wuzzy | 1740ccc2b2 | |
Wuzzy | 2cde0476c7 | |
Wuzzy | e01ed8ab24 | |
Wuzzy | 7be98bfce0 | |
Wuzzy | b72afa7e62 | |
Wuzzy | 45d09754d0 | |
Wuzzy | 293dd036f8 | |
Wuzzy | 9405232fef | |
Wuzzy | 3c8e2634c0 | |
Wuzzy | 2f1c201076 | |
Wuzzy | 63d630a208 | |
Wuzzy | 7c9126ace5 | |
Wuzzy | 9ef6176958 | |
Wuzzy | 04c2da63ad | |
Wuzzy | 5aeb4aea74 | |
Wuzzy | d7fc158073 | |
Wuzzy | 2b586549cf | |
Wuzzy | 550efda495 | |
Wuzzy | fb389df3a0 | |
Wuzzy | f7af5dfa07 | |
Wuzzy | 008a1b1cac | |
Wuzzy | d25e9ec4cc | |
Wuzzy | e26f03f37e | |
Wuzzy | e77c5a3562 | |
Wuzzy | cdb6e3e3f5 | |
Wuzzy | 82d56de18e | |
Wuzzy | e24a698bae | |
Wuzzy | 9fc834c8db | |
Wuzzy | 9ff95e7a08 | |
Wuzzy | ac7a16eb96 | |
Wuzzy | b551b144d4 | |
Wuzzy | 4ede0a1227 | |
Wuzzy | e26a668b74 | |
Wuzzy | 7935e64637 | |
Wuzzy | 45a30867c3 | |
Wuzzy | 2e092dc15f | |
Wuzzy | 206293e3f9 | |
Wuzzy | 12581e8441 | |
Wuzzy | c62658fd27 | |
Wuzzy | f1f6dc4c48 | |
Wuzzy | a16886bf17 | |
Wuzzy | ae513f7b53 | |
Wuzzy | 0b9e25fd9a | |
Wuzzy | 256dc9e1b5 | |
Wuzzy | 053e10f223 | |
Wuzzy | 2c599c4a0e | |
Wuzzy | cc9b78215a | |
Wuzzy | f713394f6d | |
Wuzzy | 18adaef361 | |
Wuzzy | f59f4d4f7c | |
Wuzzy | c868b7a767 | |
Wuzzy | f48019a877 | |
Wuzzy | b4b5cb2879 | |
Wuzzy | 2a9e30b900 | |
Wuzzy | f55dac38e2 | |
Wuzzy | a943428b11 | |
Wuzzy | aee7c4b4a2 | |
Wuzzy | c8f9c3e923 | |
Wuzzy | 2892c45f52 | |
Wuzzy | 3cdf570460 | |
Wuzzy | 022f627fd0 | |
Wuzzy | 29c12439c4 | |
Wuzzy | 740e87cd81 | |
Wuzzy | ef0b941bce | |
Wuzzy | 655a240107 | |
Wuzzy | 05e8cc8a2c | |
Wuzzy | 7a4aeb6625 | |
Wuzzy | 895b9e7e3a | |
Wuzzy | e2fd769657 | |
Wuzzy | 5dd650e921 | |
Wuzzy | eff91038e8 | |
Wuzzy | 4f2baf8506 | |
Wuzzy | 2f88b42210 | |
Wuzzy | b9377a0dbf | |
Wuzzy | 6d6fc3f34c | |
Wuzzy | ad8403adbd | |
Wuzzy | e6e9d13701 | |
Wuzzy | 225930a2c7 | |
Wuzzy | c6efa8a626 | |
Wuzzy | 79a3eb23a7 | |
Wuzzy | a15c58a2dc | |
Wuzzy | 10035a64af | |
Wuzzy | 47ef78bf6a | |
Wuzzy | f3b4c56772 | |
Wuzzy | 7899f6d432 | |
Wuzzy | a5b20b1bf0 | |
Wuzzy | 8b44e6fb7a | |
Wuzzy | c98df597fc | |
Wuzzy | e37411dc13 | |
Wuzzy | 6f9e178084 | |
Wuzzy | 9434baf991 | |
Wuzzy | 793357cdfe | |
Wuzzy | f373f3a4f1 | |
Wuzzy | a58b6fd3fb | |
Wuzzy | b8d3e7473b | |
Wuzzy | 086b29f08c | |
Wuzzy | 636ff60c68 | |
Wuzzy | 049c632276 | |
Wuzzy | 20576431e1 | |
Wuzzy | db8d7af245 | |
Wuzzy | 9057743eb8 | |
Wuzzy | daed3059bf | |
Wuzzy | f40eeb4477 | |
Wuzzy | f7d9aea529 | |
Wuzzy | fed10e688e | |
Wuzzy | 2e738a39a4 | |
Wuzzy | 3cfdb85926 | |
Wuzzy | 44fcf6eb34 | |
Wuzzy | f9b557c2ba | |
Wuzzy | 47c817d75a | |
Wuzzy | a29626881f | |
Wuzzy | e4fbbeddb2 | |
Wuzzy | 1df3d0e42b | |
Wuzzy | 1cb142ec5f | |
Wuzzy | 342202c979 | |
Wuzzy | 0cc038c545 | |
Wuzzy | 0d6610dcee | |
Wuzzy | d691490016 | |
Wuzzy | 1217d9fa88 | |
Wuzzy | e0418553a6 | |
Wuzzy | 3edf880301 | |
Wuzzy | a84f7935fa | |
Wuzzy | 26c9150591 | |
Wuzzy | 720bc6a56f | |
Wuzzy | dcba7e2325 | |
Wuzzy | 66c6b373a5 | |
Wuzzy | 7ca999626d | |
Wuzzy | 5e5dcfaaa3 | |
Wuzzy | 05e3a616b4 | |
Wuzzy | cfac33a94f | |
Wuzzy | 581f0fa2dd | |
Wuzzy | 0b9c0d177c | |
Wuzzy | 3ca01c3149 | |
Wuzzy | ea0c2e9568 | |
Wuzzy | 98b3003e07 | |
Wuzzy | c4558a31ab | |
Wuzzy | 2b3922c972 | |
Wuzzy | 4c8433b41c | |
Wuzzy | 149d1450ef | |
Wuzzy | a9776814a6 | |
Wuzzy | 4f8377b161 | |
Wuzzy | 2f74aea6f5 | |
Wuzzy | b31a717410 | |
Wuzzy | 2028ef40cb |
1
API.md
|
@ -21,6 +21,7 @@ All nodes can have these fields:
|
||||||
|
|
||||||
* `_mcl_hardness`: Hardness of the block, ranges from 0 to infinity (represented by -1). Determines digging times. Default: 0
|
* `_mcl_hardness`: Hardness of the block, ranges from 0 to infinity (represented by -1). Determines digging times. Default: 0
|
||||||
* `_mcl_blast_resistance`: How well this block blocks and resists explosions. Default: 0
|
* `_mcl_blast_resistance`: How well this block blocks and resists explosions. Default: 0
|
||||||
|
* `_mcl_falling_node_alternative`: If set to an itemstring, the node will turn into this node before it starts to fall.
|
||||||
* `_mcl_after_falling(pos)`: Called after a falling node finished falling and turned into a node.
|
* `_mcl_after_falling(pos)`: Called after a falling node finished falling and turned into a node.
|
||||||
|
|
||||||
Use the `mcl_sounds` mod for the sounds.
|
Use the `mcl_sounds` mod for the sounds.
|
||||||
|
|
16
GROUPS.md
|
@ -56,6 +56,16 @@ Please read <http://minecraft.gamepedia.com/Breaking> to learn how digging times
|
||||||
* `anvil`: Anvil. 1: No damage. 2-3: Higher damage levels
|
* `anvil`: Anvil. 1: No damage. 2-3: Higher damage levels
|
||||||
* `no_rename=1`: Item cannot be renamed by anvil
|
* `no_rename=1`: Item cannot be renamed by anvil
|
||||||
* `comparator_signal=X`: If set, this node outputs a constant (!) comparator signal output of strength X.
|
* `comparator_signal=X`: If set, this node outputs a constant (!) comparator signal output of strength X.
|
||||||
|
* `piston=X`: Piston (main body) (1 = normal, 2 = sticky)
|
||||||
|
* `piston_pusher=X`: Piston pusher (1 = normal, 2 = sticky)
|
||||||
|
* `hopper=X`: Hopper (1 = downwards, 2 = sideways)
|
||||||
|
* `portal=1`: Portal (node that teleports players and things by standing inside)
|
||||||
|
* `end_portal_frame=X`: End portal frame (1 = no eye, 2 = with eye)
|
||||||
|
* `coral=X`: Coral (any type) (1 = alive, 2 = dead)
|
||||||
|
* `coral_plant=X`: Coral in the "plant" shape (1 = alive, 2 = dead)
|
||||||
|
* `coral_fan=X`: Coral fan (1 = alive, 2 = dead)
|
||||||
|
* `coral_block=X`: Coral block (1 = alive, 2 = dead)
|
||||||
|
* `coral_species=X`: Specifies the species of a coral; equal X means equal species
|
||||||
|
|
||||||
#### Footnotes
|
#### Footnotes
|
||||||
|
|
||||||
|
@ -66,8 +76,10 @@ Please read <http://minecraft.gamepedia.com/Breaking> to learn how digging times
|
||||||
### Groups (mostly) used for crafting recipes
|
### Groups (mostly) used for crafting recipes
|
||||||
|
|
||||||
* `sand=1`: Sand (any color)
|
* `sand=1`: Sand (any color)
|
||||||
* `sandstone=1`: (Yellow) sandstone and related nodes (chiseled and the like) (only full blocks)
|
* `sandstone=1`: Sandstone (any color) and related nodes (chiseled and the like) (only full blocks)
|
||||||
* `redsandstone=1`: Red sandstone and related nodes (chiseled and the like) (only full blocks)
|
* `normal_sandstone=1`: “Normal” (yellow) sandstone and related nodes (chiseled and the like) (only full blocks)
|
||||||
|
* `red_sandstone=1`: Red sandstone and related nodes (chiseled and the like) (only full blocks)
|
||||||
|
* `hardened_clay=1`: Terracotta (any color)
|
||||||
* `quartz_block=1`: Quartz Block and variants (chiseled, pillar, etc.) (only full blocks)
|
* `quartz_block=1`: Quartz Block and variants (chiseled, pillar, etc.) (only full blocks)
|
||||||
* `stonebrick=1`: Stone Bricks and related nodes (only full blocks)
|
* `stonebrick=1`: Stone Bricks and related nodes (only full blocks)
|
||||||
* `shulker_box=1`: Block is a shulker box
|
* `shulker_box=1`: Block is a shulker box
|
||||||
|
|
|
@ -8,8 +8,6 @@ For these features, no easy Lua workaround could be found.
|
||||||
|
|
||||||
### Lua API
|
### Lua API
|
||||||
#### Tools/wielded item
|
#### Tools/wielded item
|
||||||
- Allow **much** faster liquid flowing ([#2810](https://github.com/minetest/minetest/issues/2810))
|
|
||||||
|
|
||||||
- “Lock” hotbar for a brief time after using an item, making it impossible to switch item or to attach/mine/build until the delay is over (For eating with delay)
|
- “Lock” hotbar for a brief time after using an item, making it impossible to switch item or to attach/mine/build until the delay is over (For eating with delay)
|
||||||
- Tool charging: Holding down the mouse and releasing it, applying a “power level” (For bow and arrows, more charge = higher arrow range) ([issue 5212](https://github.com/minetest/minetest/issues/5212))
|
- Tool charging: Holding down the mouse and releasing it, applying a “power level” (For bow and arrows, more charge = higher arrow range) ([issue 5212](https://github.com/minetest/minetest/issues/5212))
|
||||||
- [Dual Wielding](http://minecraft.gamepedia.com/Dual_wield)
|
- [Dual Wielding](http://minecraft.gamepedia.com/Dual_wield)
|
||||||
|
@ -21,7 +19,6 @@ For these features, no easy Lua workaround could be found.
|
||||||
|
|
||||||
## Interface
|
## Interface
|
||||||
- Inventory: Hold down right mouse button while holding an item stack to drop items into the slots as you move the mouse. Makes crafting MUCH faster
|
- Inventory: Hold down right mouse button while holding an item stack to drop items into the slots as you move the mouse. Makes crafting MUCH faster
|
||||||
- **Much** more informative item tooltips
|
|
||||||
- Sneak+Leftclick on crafting output crafts as many items as possible and immediately puts it into the player inventory ([issue 5211](https://github.com/minetest/minetest/issues/5211))
|
- Sneak+Leftclick on crafting output crafts as many items as possible and immediately puts it into the player inventory ([issue 5211](https://github.com/minetest/minetest/issues/5211))
|
||||||
- Sneak+click on inventory slot should be able to put items into additional “fallback inventories” if the first inventory is full. Required for large chests
|
- Sneak+click on inventory slot should be able to put items into additional “fallback inventories” if the first inventory is full. Required for large chests
|
||||||
- Sneak+click puts items in different inventories depending on the item type (maybe group-based)? Required for sneak-clicking to armor slots
|
- Sneak+click puts items in different inventories depending on the item type (maybe group-based)? Required for sneak-clicking to armor slots
|
||||||
|
@ -39,8 +36,5 @@ For these features, a workaround (or hack ;-)) by using Lua is theoretically pos
|
||||||
- Set damage frequency of `damage_per_second`. In Minecraft many things damage players every half-second rather than every second
|
- Set damage frequency of `damage_per_second`. In Minecraft many things damage players every half-second rather than every second
|
||||||
- Possible to damage players directly when they are with the head inside. This allows to add Minecraft-like suffocation
|
- Possible to damage players directly when they are with the head inside. This allows to add Minecraft-like suffocation
|
||||||
|
|
||||||
#### Crafting
|
|
||||||
- Require tools to be intact in crafting
|
|
||||||
|
|
||||||
#### Nice-to-haye
|
#### Nice-to-haye
|
||||||
- Utility function to rotate pillar-like nodes, requiring only 3 possible orientations (X, Y, Z). Basically this is `minetest.rotate_node` but with less orientations; the purpur pillar would mess up if a mirrored rotation would be possible. This is already implemented in MCL2, See `mcl_util` for more infos
|
- Utility function to rotate pillar-like nodes, requiring only 3 possible orientations (X, Y, Z). Basically this is `minetest.rotate_node` but with less orientations; the purpur pillar would mess up if a mirrored rotation would be possible. This is already implemented in MCL2, See `mcl_util` for more infos
|
||||||
|
|
33
README.md
|
@ -1,8 +1,8 @@
|
||||||
# MineClone 2
|
# MineClone 2
|
||||||
An unofficial Minecraft-like game for Minetest. Forked from MineClone by daredevils.
|
An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils.
|
||||||
Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB.
|
Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB.
|
||||||
|
|
||||||
Version: 0.48.1
|
Version: 0.61.0
|
||||||
|
|
||||||
### Gameplay
|
### Gameplay
|
||||||
You start in a randomly-generated world made entirely of cubes. You can explore
|
You start in a randomly-generated world made entirely of cubes. You can explore
|
||||||
|
@ -67,21 +67,20 @@ an explanation.
|
||||||
#### Incomplete items
|
#### Incomplete items
|
||||||
These items do not work yet, but you can get them with `/giveme` for testing:
|
These items do not work yet, but you can get them with `/giveme` for testing:
|
||||||
|
|
||||||
* Fishing Rod: `mcl_fishing:fishing_rod`
|
|
||||||
* Activator Rail: `mcl_minecarts:activator_rail`
|
|
||||||
* Minecart with Chest: `mcl_minecarts:chest_minecart`
|
* Minecart with Chest: `mcl_minecarts:chest_minecart`
|
||||||
* Minecart with Furnace: `mcl_minecarts:furnace_minecart`
|
* Minecart with Furnace: `mcl_minecarts:furnace_minecart`
|
||||||
* Minecart with Hopper: `mcl_minecarts:hopper_minecart`
|
* Minecart with Hopper: `mcl_minecarts:hopper_minecart`
|
||||||
* Minecart with Command Block: `mcl_minecarts:command_block_minecart`
|
* Minecart with Command Block: `mcl_minecarts:command_block_minecart`
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
This game requires [Minetest](http://minetest.net) to run
|
This game requires [Minetest](http://minetest.net) to run (version 5.0.0 or
|
||||||
(version 0.4.16 or 0.4.17).
|
later). So you need to install Minetest first. Only stable versions of Minetest
|
||||||
So you need to install Minetest first. Only stable versions of Minetest are
|
are officially supported.
|
||||||
officially supported. Minetest 5.0.0 (when released) will NOT be supported (yet).
|
There is no support for running MineClone 2 in development versions of Minetest.
|
||||||
There is no support whatsoever for running MineClone 2 in development versions of Minetest.
|
|
||||||
To install MineClone 2, move this directory into the “games” directory of
|
To install MineClone 2 (if you haven't already), move this directory into the
|
||||||
your Minetest data directory. Consult the help of Minetest to learn more.
|
“games” directory of your Minetest data directory. Consult the help of
|
||||||
|
Minetest to learn more.
|
||||||
|
|
||||||
## Project description
|
## Project description
|
||||||
The main goal of **MineClone 2** is to be a clone of Minecraft and to be released as free software.
|
The main goal of **MineClone 2** is to be a clone of Minecraft and to be released as free software.
|
||||||
|
@ -183,7 +182,7 @@ Technical differences from Minecraft:
|
||||||
## Reporting bugs
|
## Reporting bugs
|
||||||
Please report all bugs and missing Minecraft features here:
|
Please report all bugs and missing Minecraft features here:
|
||||||
|
|
||||||
<https://git.minetest.land/Wuzzy/MineClone2-Bugs>
|
<https://git.minetest.land/Wuzzy/MineClone2/issues>
|
||||||
|
|
||||||
## Other readme files
|
## Other readme files
|
||||||
|
|
||||||
|
@ -197,8 +196,10 @@ There are so many people to list (sorry). Check out the respective mod directori
|
||||||
|
|
||||||
### Coding
|
### Coding
|
||||||
* [Wuzzy](https://forum.minetest.net/memberlist.php?mode=viewprofile&u=3082): Main programmer of most mods
|
* [Wuzzy](https://forum.minetest.net/memberlist.php?mode=viewprofile&u=3082): Main programmer of most mods
|
||||||
* daredevils: Creator of MineClone on which MineClone 2 is based on
|
* davedevils: Creator of MineClone on which MineClone 2 is based on
|
||||||
* [ex-bart](https://github.com/ex-bart): Redstone comparators
|
* [ex-bart](https://github.com/ex-bart): Redstone comparators
|
||||||
|
* [Rootyjr](https://github.com/Rootyjr): Fishing rod and bugfixes
|
||||||
|
* [aligator](https://github.com/aligator): Improvement of doors
|
||||||
* Lots of other people: TO BE WRITTEN (see mod directories for details)
|
* Lots of other people: TO BE WRITTEN (see mod directories for details)
|
||||||
|
|
||||||
### Textures
|
### Textures
|
||||||
|
@ -218,7 +219,7 @@ Various sources. See the respective mod directories for details.
|
||||||
|
|
||||||
### Special thanks
|
### Special thanks
|
||||||
|
|
||||||
* daredevils for starting MineClone, the original version of this game
|
* davedevils for starting MineClone, the original version of this game
|
||||||
* celeron55 for creating Minetest
|
* celeron55 for creating Minetest
|
||||||
* Minetest's modding community for providing a huge selection of mods, some of which ended up in MineClone 2
|
* Minetest's modding community for providing a huge selection of mods, some of which ended up in MineClone 2
|
||||||
* Jordach for the jukebox music compilation from Big Freaking Dig
|
* Jordach for the jukebox music compilation from Big Freaking Dig
|
||||||
|
@ -241,10 +242,10 @@ Here's the detailed legalese for those who need it:
|
||||||
### License of source code
|
### License of source code
|
||||||
MineClone 2 is a clean-room implementation of Minecraft
|
MineClone 2 is a clean-room implementation of Minecraft
|
||||||
and licensed under the
|
and licensed under the
|
||||||
GNU LGPL v2.1 (Wuzzy, daredevils and countless others) (see `LICENSE.txt`).
|
GNU LGPL v2.1 (Wuzzy, davedevils and countless others) (see `LICENSE.txt`).
|
||||||
|
|
||||||
MineClone 2 is a direct continuation of the discontinued MineClone
|
MineClone 2 is a direct continuation of the discontinued MineClone
|
||||||
project by daredevils which fell under the same license.
|
project by davedevils which fell under the same license.
|
||||||
|
|
||||||
Mods credit:
|
Mods credit:
|
||||||
See `README.txt` or `README.md` in each mod directory for information about other authors.
|
See `README.txt` or `README.md` in each mod directory for information about other authors.
|
||||||
|
|
BIN
menu/header.png
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 24 KiB |
BIN
menu/icon.png
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 3.9 KiB |
|
@ -1,7 +1,9 @@
|
||||||
# This is a game specify minetest.conf file, do not edit
|
# This is a game specific minetest.conf file, do not edit
|
||||||
|
|
||||||
|
# Basic game rules
|
||||||
time_speed = 72
|
time_speed = 72
|
||||||
|
|
||||||
|
# Player physics
|
||||||
movement_acceleration_default = 2.4
|
movement_acceleration_default = 2.4
|
||||||
movement_acceleration_air = 1.2
|
movement_acceleration_air = 1.2
|
||||||
#movement_acceleration_fast = 10
|
#movement_acceleration_fast = 10
|
||||||
|
@ -20,4 +22,12 @@ movement_liquid_sink = 23
|
||||||
|
|
||||||
movement_gravity = 10.4
|
movement_gravity = 10.4
|
||||||
|
|
||||||
|
# Mapgen stuff
|
||||||
|
|
||||||
|
# altitude_chill and altitude_dry doesn't go well together with MCL2 biomes
|
||||||
|
# which already include "snowed" variants as you go higher.
|
||||||
|
# humid_rivers would cause the MushroomIsland biome to appear frequently around rivers.
|
||||||
|
mgvalleys_spflags = noaltitude_chill,noaltitude_dry,nohumid_rivers,vary_river_depth
|
||||||
|
|
||||||
|
# MCL2-specific stuff
|
||||||
keepInventory = false
|
keepInventory = false
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
# Biome Info API
|
||||||
|
This document explains the API of this mod.
|
||||||
|
|
||||||
|
## v6 mapgen functions
|
||||||
|
These are functions for the v6 mapgen only.
|
||||||
|
|
||||||
|
Use these functions only in worlds in which the v6 mapgen is used.
|
||||||
|
If you use these in any other mapgen, bad things might happen.
|
||||||
|
|
||||||
|
### `biomeinfo.get_v6_humidity(pos)`
|
||||||
|
Get the biome humidity at pos (for v6 mapgen).
|
||||||
|
|
||||||
|
### `biomeinfo.get_v6_heat(pos)`
|
||||||
|
Get the biome heat/temperature at pos (for v6 mapgen).
|
||||||
|
|
||||||
|
### `biomeinfo.get_v6_biome(pos)`
|
||||||
|
Get the v6 biome at pos.
|
||||||
|
Returns a string, which is the unique biome name.
|
||||||
|
|
||||||
|
Note: This function currently ignores the `biomeblend` v6 mapgen flag,
|
||||||
|
it just pretends this setting is disabled.
|
||||||
|
This is normally not a problem, but at areas where biomes blend,
|
||||||
|
the result is not perfectly accurate and just an estimate.
|
||||||
|
|
||||||
|
### `biomeinfo.get_active_v6_biomes()`
|
||||||
|
Returns a table containing the names of all v6 biomes that are actively
|
||||||
|
used in the current world, e.g. those that have been activated
|
||||||
|
by the use of the mapgen v6 flags (`mgv6_spflags`).
|
||||||
|
|
||||||
|
### `biomeinfo.all_v6_biomes`
|
||||||
|
This is a table containing all v6 biomes (as strings), even those that
|
||||||
|
might not be used in the current world.
|
||||||
|
|
||||||
|
### v6 biome names
|
||||||
|
|
||||||
|
These are the biome names used in this mod:
|
||||||
|
|
||||||
|
* Normal
|
||||||
|
* Desert
|
||||||
|
* Jungle
|
||||||
|
* Tundra
|
||||||
|
* Taiga
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Biome Info API [`biomeinfo`]
|
||||||
|
This is an API mod for mod developers to add a couple of missing
|
||||||
|
biome-related functions.
|
||||||
|
Currently, this mod only adds v6-related functions.
|
||||||
|
Most importantly, you can get the heat, humidity and biome in the v6 mapgen.
|
||||||
|
|
||||||
|
See `API.md` for the API documentation.
|
||||||
|
|
||||||
|
Current version: 1.0.1 (this is a [SemVer](https://semver.org/))
|
||||||
|
|
||||||
|
License: MIT License
|
|
@ -0,0 +1,179 @@
|
||||||
|
biomeinfo = {}
|
||||||
|
|
||||||
|
-- Copied from mapgen_v6.h
|
||||||
|
local MGV6_FREQ_HOT = 0.4
|
||||||
|
local MGV6_FREQ_SNOW = -0.4
|
||||||
|
local MGV6_FREQ_TAIGA = 0.5
|
||||||
|
local MGV6_FREQ_JUNGLE = 0.5
|
||||||
|
|
||||||
|
-- Biome types
|
||||||
|
local BT_NORMAL = "Normal"
|
||||||
|
local BT_TUNDRA = "Tundra"
|
||||||
|
local BT_TAIGA = "Taiga"
|
||||||
|
local BT_DESERT = "Desert"
|
||||||
|
local BT_JUNGLE = "Jungle"
|
||||||
|
|
||||||
|
-- Get mapgen settings
|
||||||
|
|
||||||
|
local seed = tonumber(minetest.get_mapgen_setting("seed")) or 0
|
||||||
|
|
||||||
|
local mgv6_perlin_biome, mgv6_perlin_humidity, mgv6_np_biome
|
||||||
|
|
||||||
|
local v6_flags_str = minetest.get_mapgen_setting("mgv6_spflags")
|
||||||
|
if v6_flags_str == nil then
|
||||||
|
v6_flags_str = ""
|
||||||
|
end
|
||||||
|
local v6_flags = string.split(v6_flags_str)
|
||||||
|
local v6_use_snow_biomes = true
|
||||||
|
local v6_use_jungles = true
|
||||||
|
-- TODO: Implement biome blend.
|
||||||
|
-- Currently we pretend biome blend is disabled.
|
||||||
|
-- This just makes the calculations inaccurate near biome boundaries,
|
||||||
|
-- but should be fine otherwise.
|
||||||
|
local v6_use_biome_blend = false
|
||||||
|
for f=1, #v6_flags do
|
||||||
|
local flag = v6_flags[f]:trim()
|
||||||
|
if flag == "nosnowbiomes" then
|
||||||
|
v6_use_snow_biomes = false
|
||||||
|
end
|
||||||
|
if flag == "snowbiomes" then
|
||||||
|
v6_use_snow_biomes = true
|
||||||
|
end
|
||||||
|
if flag == "nojungles" then
|
||||||
|
v6_use_jungles = false
|
||||||
|
end
|
||||||
|
if flag == "jungles" then
|
||||||
|
v6_use_jungles = true
|
||||||
|
end
|
||||||
|
if flag == "nobiomeblend" then
|
||||||
|
v6_use_biome_blend = false
|
||||||
|
end
|
||||||
|
-- TODO
|
||||||
|
-- if flag == "biomeblend" then
|
||||||
|
-- v6_use_biome_blend = true
|
||||||
|
-- end
|
||||||
|
end
|
||||||
|
-- Force-enable jungles when snowbiomes flag is set
|
||||||
|
if v6_use_snow_biomes then
|
||||||
|
v6_use_jungles = true
|
||||||
|
end
|
||||||
|
local v6_freq_desert = tonumber(minetest.get_mapgen_setting("mgv6_freq_desert") or 0.45)
|
||||||
|
|
||||||
|
local NOISE_MAGIC_X = 1619
|
||||||
|
local NOISE_MAGIC_Y = 31337
|
||||||
|
local NOISE_MAGIC_Z = 52591
|
||||||
|
local NOISE_MAGIC_SEED = 1013
|
||||||
|
local noise2d = function(x, y, seed)
|
||||||
|
-- TODO: implement noise2d function for biome blend
|
||||||
|
return 0
|
||||||
|
--[[
|
||||||
|
local n = (NOISE_MAGIC_X * x + NOISE_MAGIC_Y * y
|
||||||
|
+ NOISE_MAGIC_SEED * seed) & 0x7fffffff;
|
||||||
|
n = (n >> 13) ^ n;
|
||||||
|
n = (n * (n * n * 60493 + 19990303) + 1376312589) & 0x7fffffff;
|
||||||
|
return 1.0 - n / 0x40000000;
|
||||||
|
]]
|
||||||
|
end
|
||||||
|
|
||||||
|
biomeinfo.all_v6_biomes = {
|
||||||
|
BT_NORMAL,
|
||||||
|
BT_DESERT,
|
||||||
|
BT_JUNGLE,
|
||||||
|
BT_TUNDRA,
|
||||||
|
BT_TAIGA
|
||||||
|
}
|
||||||
|
|
||||||
|
local function init_perlins()
|
||||||
|
if not mgv6_perlin_biome then
|
||||||
|
mgv6_np_biome = minetest.get_mapgen_setting_noiseparams("mgv6_np_biome")
|
||||||
|
if mgv6_np_biome then
|
||||||
|
mgv6_perlin_biome = minetest.get_perlin(mgv6_np_biome)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if not mgv6_perlin_humidity then
|
||||||
|
local np_humidity = minetest.get_mapgen_setting_noiseparams("mgv6_np_humidity")
|
||||||
|
if np_humidity then
|
||||||
|
mgv6_perlin_humidity = minetest.get_perlin(np_humidity)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function biomeinfo.get_active_v6_biomes()
|
||||||
|
local biomes = { BT_NORMAL, BT_DESERT }
|
||||||
|
if v6_use_jungles then
|
||||||
|
table.insert(biomes, BT_JUNGLE)
|
||||||
|
end
|
||||||
|
if v6_use_snow_biomes then
|
||||||
|
table.insert(biomes, BT_TUNDRA)
|
||||||
|
table.insert(biomes, BT_TAIGA)
|
||||||
|
end
|
||||||
|
return biomes
|
||||||
|
end
|
||||||
|
|
||||||
|
function biomeinfo.get_v6_heat(pos)
|
||||||
|
init_perlins()
|
||||||
|
local bpos = vector.floor(pos)
|
||||||
|
-- The temperature noise needs a special offset (see calculateNoise in mapgen_v6.cpp)
|
||||||
|
return mgv6_perlin_biome:get_2d({x=bpos.x + mgv6_np_biome.spread.x*0.6, y=bpos.z + mgv6_np_biome.spread.z*0.2})
|
||||||
|
end
|
||||||
|
|
||||||
|
function biomeinfo.get_v6_humidity(pos)
|
||||||
|
init_perlins()
|
||||||
|
local bpos = vector.floor(pos)
|
||||||
|
return mgv6_perlin_humidity:get_2d({x=bpos.x, y=bpos.z})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Returns the v6 biome at pos.
|
||||||
|
-- Returns a string representing the biome name.
|
||||||
|
function biomeinfo.get_v6_biome(pos)
|
||||||
|
init_perlins()
|
||||||
|
local bpos = vector.floor(pos)
|
||||||
|
-- Based on the algorithm MapgenV6::getBiome in mapgen_v6.cpp
|
||||||
|
|
||||||
|
local pos2d = {x=bpos.x, y=bpos.z}
|
||||||
|
if not mgv6_perlin_biome or not mgv6_perlin_humidity then
|
||||||
|
return "???"
|
||||||
|
end
|
||||||
|
local d = biomeinfo.get_v6_heat(bpos)
|
||||||
|
local h = biomeinfo.get_v6_humidity(bpos)
|
||||||
|
|
||||||
|
if (v6_use_snow_biomes) then
|
||||||
|
local blend
|
||||||
|
if v6_use_biome_blend then
|
||||||
|
blend = noise2d(pos2d.x, pos2d.y, seed) / 40
|
||||||
|
else
|
||||||
|
blend = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
if (d > MGV6_FREQ_HOT + blend) then
|
||||||
|
if (h > MGV6_FREQ_JUNGLE + blend) then
|
||||||
|
return BT_JUNGLE
|
||||||
|
end
|
||||||
|
return BT_DESERT
|
||||||
|
end
|
||||||
|
if (d < MGV6_FREQ_SNOW + blend) then
|
||||||
|
if (h > MGV6_FREQ_TAIGA + blend) then
|
||||||
|
return BT_TAIGA
|
||||||
|
end
|
||||||
|
return BT_TUNDRA
|
||||||
|
end
|
||||||
|
return BT_NORMAL
|
||||||
|
end
|
||||||
|
|
||||||
|
if (d > v6_freq_desert) then
|
||||||
|
return BT_DESERT
|
||||||
|
end
|
||||||
|
|
||||||
|
if ((v6_use_biome_blend) and (d > v6_freq_desert - 0.10) and
|
||||||
|
((noise2d(pos2d.x, pos2d.y, seed) + 1.0) > (v6_freq_desert - d) * 20.0)) then
|
||||||
|
return BT_DESERT
|
||||||
|
end
|
||||||
|
|
||||||
|
if ((v6_use_jungles) and (h > 0.75)) then
|
||||||
|
return BT_JUNGLE
|
||||||
|
end
|
||||||
|
|
||||||
|
return BT_NORMAL
|
||||||
|
end
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
name = biomeinfo
|
||||||
|
description = Simple API to get data about biomes.
|
|
@ -7,6 +7,7 @@ minetest.check_single_for_falling = function(pos)
|
||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
if minetest.get_item_group(node.name, "attached_node_facedir") ~= 0 then
|
if minetest.get_item_group(node.name, "attached_node_facedir") ~= 0 then
|
||||||
local dir = minetest.facedir_to_dir(node.param2)
|
local dir = minetest.facedir_to_dir(node.param2)
|
||||||
|
if dir then
|
||||||
local cpos = vector.add(pos, dir)
|
local cpos = vector.add(pos, dir)
|
||||||
local cnode = minetest.get_node(cpos)
|
local cnode = minetest.get_node(cpos)
|
||||||
if minetest.get_item_group(cnode.name, "solid") == 0 then
|
if minetest.get_item_group(cnode.name, "solid") == 0 then
|
||||||
|
@ -18,6 +19,7 @@ minetest.check_single_for_falling = function(pos)
|
||||||
ret = true
|
ret = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return ret_o or ret
|
return ret_o or ret
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,12 +1,23 @@
|
||||||
-- Some global variables (don't overwrite them!)
|
-- Some global variables (don't overwrite them!)
|
||||||
mcl_vars = {}
|
mcl_vars = {}
|
||||||
|
|
||||||
--- GUI / inventory menu colors
|
--- GUI / inventory menu settings
|
||||||
mcl_vars.gui_slots = "listcolors[#9990;#FFF7;#FFF0;#000;#FFF]"
|
mcl_vars.gui_slots = "listcolors[#9990;#FFF7;#FFF0;#000;#FFF]"
|
||||||
mcl_vars.gui_bg = "bgcolor[#080808BB;true]"
|
-- nonbg is added as formspec prepend in mcl_formspec_prepend
|
||||||
mcl_vars.gui_bg_img = ""
|
mcl_vars.gui_nonbg = mcl_vars.gui_slots ..
|
||||||
|
"style_type[image_button;border=false;bgimg=mcl_inventory_button9.png;bgimg_pressed=mcl_inventory_button9_pressed.png;bgimg_middle=2,2]"..
|
||||||
|
"style_type[button;border=false;bgimg=mcl_inventory_button9.png;bgimg_pressed=mcl_inventory_button9_pressed.png;bgimg_middle=2,2]"..
|
||||||
|
"style_type[field;textcolor=#323232]"..
|
||||||
|
"style_type[label;textcolor=#323232]"..
|
||||||
|
"style_type[textarea;textcolor=#323232]"..
|
||||||
|
"style_type[checkbox;textcolor=#323232]"
|
||||||
|
|
||||||
mcl_vars.inventory_header = mcl_vars.gui_slots .. mcl_vars.gui_bg
|
-- Background stuff must be manually added by mods (no formspec prepend)
|
||||||
|
mcl_vars.gui_bg_color = "bgcolor[#00000000]"
|
||||||
|
mcl_vars.gui_bg_img = "background9[1,1;1,1;mcl_base_textures_background9.png;true;7]"
|
||||||
|
|
||||||
|
-- Legacy
|
||||||
|
mcl_vars.inventory_header = ""
|
||||||
|
|
||||||
-- Mapgen variables
|
-- Mapgen variables
|
||||||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
local mg_name = minetest.get_mapgen_setting("mg_name")
|
||||||
|
@ -81,7 +92,7 @@ end
|
||||||
mcl_vars.mg_end_min = -27073 -- Carefully chosen to be at a mapchunk border
|
mcl_vars.mg_end_min = -27073 -- Carefully chosen to be at a mapchunk border
|
||||||
mcl_vars.mg_end_max_official = mcl_vars.mg_end_min + minecraft_height_limit
|
mcl_vars.mg_end_max_official = mcl_vars.mg_end_min + minecraft_height_limit
|
||||||
mcl_vars.mg_end_max = mcl_vars.mg_overworld_min - 2000
|
mcl_vars.mg_end_max = mcl_vars.mg_overworld_min - 2000
|
||||||
mcl_vars.mg_end_platform_pos = { x = 100, y = mcl_vars.mg_end_min + 80, z = 0 }
|
mcl_vars.mg_end_platform_pos = { x = 100, y = mcl_vars.mg_end_min + 74, z = 0 }
|
||||||
|
|
||||||
-- Realm barrier used to safely separate the End from the void below the Overworld
|
-- Realm barrier used to safely separate the End from the void below the Overworld
|
||||||
mcl_vars.mg_realm_barrier_overworld_end_max = mcl_vars.mg_end_max
|
mcl_vars.mg_realm_barrier_overworld_end_max = mcl_vars.mg_end_max
|
||||||
|
|
|
@ -4,6 +4,9 @@ Licenses of sounds
|
||||||
Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
|
Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
|
||||||
http://creativecommons.org/licenses/by-sa/3.0/
|
http://creativecommons.org/licenses/by-sa/3.0/
|
||||||
|
|
||||||
|
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
|
||||||
|
http://creativecommons.org/licenses/by-sa/4.0/
|
||||||
|
|
||||||
Creative Commons Attribution 3.0 Unported (CC BY-SA 3.0)
|
Creative Commons Attribution 3.0 Unported (CC BY-SA 3.0)
|
||||||
http://creativecommons.org/licenses/by/3.0/
|
http://creativecommons.org/licenses/by/3.0/
|
||||||
|
|
||||||
|
@ -86,5 +89,9 @@ Adam_N (CC0 1.0):
|
||||||
player_falling_damage.ogg
|
player_falling_damage.ogg
|
||||||
Source: <https://www.freesound.org/people/Adam_N/sounds/346692/>
|
Source: <https://www.freesound.org/people/Adam_N/sounds/346692/>
|
||||||
|
|
||||||
|
Alecia Shepherd (CC BY-SA 4.0):
|
||||||
|
mcl_sounds_cloth.ogg
|
||||||
|
Source: SnowSong sound and music pack <https://opengameart.org/content/snowsong-sound-and-music-pack>
|
||||||
|
|
||||||
Unknown authors (WTFPL):
|
Unknown authors (WTFPL):
|
||||||
pedology_snow_soft_footstep.*.ogg
|
pedology_snow_soft_footstep.*.ogg
|
||||||
|
|
|
@ -97,6 +97,20 @@ function mcl_sounds.node_sound_wood_defaults(table)
|
||||||
return table
|
return table
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function mcl_sounds.node_sound_wool_defaults(table)
|
||||||
|
table = table or {}
|
||||||
|
table.footstep = table.footstep or
|
||||||
|
{name="mcl_sounds_cloth", gain=0.5}
|
||||||
|
table.dug = table.dug or
|
||||||
|
{name="mcl_sounds_cloth", gain=1.0}
|
||||||
|
table.dig = table.dig or
|
||||||
|
{name="mcl_sounds_cloth", gain=0.9}
|
||||||
|
table.place = table.dig or
|
||||||
|
{name="mcl_sounds_cloth", gain=1.0}
|
||||||
|
mcl_sounds.node_sound_defaults(table)
|
||||||
|
return table
|
||||||
|
end
|
||||||
|
|
||||||
function mcl_sounds.node_sound_leaves_defaults(table)
|
function mcl_sounds.node_sound_leaves_defaults(table)
|
||||||
table = table or {}
|
table = table or {}
|
||||||
table.footstep = table.footstep or
|
table.footstep = table.footstep or
|
||||||
|
|
|
@ -174,14 +174,15 @@ function mcl_util.move_item(source_inventory, source_list, source_stack_id, dest
|
||||||
|
|
||||||
if not source_inventory:is_empty(source_list) then
|
if not source_inventory:is_empty(source_list) then
|
||||||
local stack = source_inventory:get_stack(source_list, source_stack_id)
|
local stack = source_inventory:get_stack(source_list, source_stack_id)
|
||||||
local item = stack:get_name()
|
|
||||||
if not stack:is_empty() then
|
if not stack:is_empty() then
|
||||||
if not destination_inventory:room_for_item(destination_list, item) then
|
local new_stack = ItemStack(stack)
|
||||||
|
new_stack:set_count(1)
|
||||||
|
if not destination_inventory:room_for_item(destination_list, new_stack) then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
stack:take_item()
|
stack:take_item()
|
||||||
source_inventory:set_stack(source_list, source_stack_id, stack)
|
source_inventory:set_stack(source_list, source_stack_id, stack)
|
||||||
destination_inventory:add_item(destination_list, item)
|
destination_inventory:add_item(destination_list, new_stack)
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -12,15 +12,17 @@ minetest.register_entity("drippingwater:drop_water", {
|
||||||
hp_max = 1,
|
hp_max = 1,
|
||||||
physical = true,
|
physical = true,
|
||||||
collide_with_objects = false,
|
collide_with_objects = false,
|
||||||
collisionbox = {0,0,0,0,0,0},
|
collisionbox = {-0.025,-0.05,-0.025,0.025,-0.01,0.025},
|
||||||
|
pointable = false,
|
||||||
visual = "cube",
|
visual = "cube",
|
||||||
visual_size = {x=0.05, y=0.1},
|
visual_size = {x=0.05, y=0.1},
|
||||||
textures = {water_tex, water_tex, water_tex, water_tex, water_tex, water_tex},
|
textures = {water_tex, water_tex, water_tex, water_tex, water_tex, water_tex},
|
||||||
spritediv = {x=1, y=1},
|
spritediv = {x=1, y=1},
|
||||||
initial_sprite_basepos = {x=0, y=0},
|
initial_sprite_basepos = {x=0, y=0},
|
||||||
|
static_save = false,
|
||||||
|
|
||||||
on_activate = function(self, staticdata)
|
on_activate = function(self, staticdata)
|
||||||
self.object:setsprite({x=0,y=0}, 1, 1, true)
|
self.object:set_sprite({x=0,y=0}, 1, 1, true)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_step = function(self, dtime)
|
on_step = function(self, dtime)
|
||||||
|
@ -28,11 +30,11 @@ minetest.register_entity("drippingwater:drop_water", {
|
||||||
local ownpos = self.object:get_pos()
|
local ownpos = self.object:get_pos()
|
||||||
|
|
||||||
if k==1 then
|
if k==1 then
|
||||||
self.object:setacceleration({x=0, y=-5, z=0})
|
self.object:set_acceleration({x=0, y=-5, z=0})
|
||||||
end
|
end
|
||||||
|
|
||||||
if minetest.get_node({x=ownpos.x, y=ownpos.y +0.5, z=ownpos.z}).name == "air" then
|
if minetest.get_node({x=ownpos.x, y=ownpos.y +0.5, z=ownpos.z}).name == "air" then
|
||||||
self.object:setacceleration({x=0, y=-5, z=0})
|
self.object:set_acceleration({x=0, y=-5, z=0})
|
||||||
end
|
end
|
||||||
|
|
||||||
if minetest.get_node({x=ownpos.x, y=ownpos.y -0.5, z=ownpos.z}).name ~= "air" then
|
if minetest.get_node({x=ownpos.x, y=ownpos.y -0.5, z=ownpos.z}).name ~= "air" then
|
||||||
|
@ -50,15 +52,18 @@ minetest.register_entity("drippingwater:drop_lava", {
|
||||||
hp_max = 1,
|
hp_max = 1,
|
||||||
physical = true,
|
physical = true,
|
||||||
collide_with_objects = false,
|
collide_with_objects = false,
|
||||||
collisionbox = {0,0,0,0,0,0},
|
collisionbox = {-0.025,-0.05,-0.025,0.025,-0.01,0.025},
|
||||||
|
glow = math.max(7, minetest.registered_nodes["mcl_core:lava_source"].light_source - 3),
|
||||||
|
pointable = false,
|
||||||
visual = "cube",
|
visual = "cube",
|
||||||
visual_size = {x=0.05, y=0.1},
|
visual_size = {x=0.05, y=0.1},
|
||||||
textures = {lava_tex, lava_tex, lava_tex, lava_tex, lava_tex, lava_tex},
|
textures = {lava_tex, lava_tex, lava_tex, lava_tex, lava_tex, lava_tex},
|
||||||
spritediv = {x=1, y=1},
|
spritediv = {x=1, y=1},
|
||||||
initial_sprite_basepos = {x=0, y=0},
|
initial_sprite_basepos = {x=0, y=0},
|
||||||
|
static_save = false,
|
||||||
|
|
||||||
on_activate = function(self, staticdata)
|
on_activate = function(self, staticdata)
|
||||||
self.object:setsprite({x=0,y=0}, 1, 0, true)
|
self.object:set_sprite({x=0,y=0}, 1, 0, true)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_step = function(self, dtime)
|
on_step = function(self, dtime)
|
||||||
|
@ -66,11 +71,11 @@ minetest.register_entity("drippingwater:drop_lava", {
|
||||||
local ownpos = self.object:get_pos()
|
local ownpos = self.object:get_pos()
|
||||||
|
|
||||||
if k==1 then
|
if k==1 then
|
||||||
self.object:setacceleration({x=0, y=-5, z=0})
|
self.object:set_acceleration({x=0, y=-5, z=0})
|
||||||
end
|
end
|
||||||
|
|
||||||
if minetest.get_node({x=ownpos.x, y=ownpos.y +0.5, z=ownpos.z}).name == "air" then
|
if minetest.get_node({x=ownpos.x, y=ownpos.y +0.5, z=ownpos.z}).name == "air" then
|
||||||
self.object:setacceleration({x=0, y=-5, z=0})
|
self.object:set_acceleration({x=0, y=-5, z=0})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -88,7 +93,7 @@ minetest.register_entity("drippingwater:drop_lava", {
|
||||||
minetest.register_abm(
|
minetest.register_abm(
|
||||||
{
|
{
|
||||||
label = "Create water drops",
|
label = "Create water drops",
|
||||||
nodenames = {"group:solid"},
|
nodenames = {"group:opaque", "group:leaves"},
|
||||||
neighbors = {"group:water"},
|
neighbors = {"group:water"},
|
||||||
interval = 2,
|
interval = 2,
|
||||||
chance = 22,
|
chance = 22,
|
||||||
|
@ -106,7 +111,7 @@ minetest.register_abm(
|
||||||
minetest.register_abm(
|
minetest.register_abm(
|
||||||
{
|
{
|
||||||
label = "Create lava drops",
|
label = "Create lava drops",
|
||||||
nodenames = {"group:solid"},
|
nodenames = {"group:opaque"},
|
||||||
neighbors = {"group:lava"},
|
neighbors = {"group:lava"},
|
||||||
interval = 2,
|
interval = 2,
|
||||||
chance = 22,
|
chance = 22,
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
local S = minetest.get_translator("mcl_boats")
|
||||||
--
|
--
|
||||||
-- Helper functions
|
-- Helper functions
|
||||||
--
|
--
|
||||||
|
@ -33,6 +34,8 @@ local boat_visual_size = {x = 3, y = 3}
|
||||||
local driver_visual_size = { x = 1/boat_visual_size.x, y = 1/boat_visual_size.y }
|
local driver_visual_size = { x = 1/boat_visual_size.x, y = 1/boat_visual_size.y }
|
||||||
local paddling_speed = 22
|
local paddling_speed = 22
|
||||||
local boat_y_offset = 0.35
|
local boat_y_offset = 0.35
|
||||||
|
local boat_y_offset_ground = boat_y_offset + 0.6
|
||||||
|
local boat_side_offset = 1.001
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Boat entity
|
-- Boat entity
|
||||||
|
@ -69,7 +72,7 @@ function boat.on_rightclick(self, clicker)
|
||||||
mcl_player.player_set_animation(clicker, "stand" , 30)
|
mcl_player.player_set_animation(clicker, "stand" , 30)
|
||||||
local pos = clicker:get_pos()
|
local pos = clicker:get_pos()
|
||||||
pos = {x = pos.x, y = pos.y + 0.2, z = pos.z}
|
pos = {x = pos.x, y = pos.y + 0.2, z = pos.z}
|
||||||
clicker:setpos(pos)
|
clicker:set_pos(pos)
|
||||||
elseif not self._driver then
|
elseif not self._driver then
|
||||||
local attach = clicker:get_attach()
|
local attach = clicker:get_attach()
|
||||||
if attach and attach:get_luaentity() then
|
if attach and attach:get_luaentity() then
|
||||||
|
@ -82,7 +85,7 @@ function boat.on_rightclick(self, clicker)
|
||||||
end
|
end
|
||||||
self._driver = clicker
|
self._driver = clicker
|
||||||
clicker:set_attach(self.object, "",
|
clicker:set_attach(self.object, "",
|
||||||
{x = 0, y = 3.75, z = -1}, {x = 0, y = 0, z = 0})
|
{x = 0, y = 0.42, z = -1}, {x = 0, y = 0, z = 0})
|
||||||
clicker:set_properties({ visual_size = driver_visual_size })
|
clicker:set_properties({ visual_size = driver_visual_size })
|
||||||
mcl_player.player_attached[name] = true
|
mcl_player.player_attached[name] = true
|
||||||
minetest.after(0.2, function(name)
|
minetest.after(0.2, function(name)
|
||||||
|
@ -91,7 +94,7 @@ function boat.on_rightclick(self, clicker)
|
||||||
mcl_player.player_set_animation(player, "sit" , 30)
|
mcl_player.player_set_animation(player, "sit" , 30)
|
||||||
end
|
end
|
||||||
end, name)
|
end, name)
|
||||||
clicker:set_look_horizontal(self.object:getyaw())
|
clicker:set_look_horizontal(self.object:get_yaw())
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -143,13 +146,29 @@ function boat.on_punch(self, puncher)
|
||||||
end
|
end
|
||||||
|
|
||||||
function boat.on_step(self, dtime)
|
function boat.on_step(self, dtime)
|
||||||
self._v = get_v(self.object:getvelocity()) * get_sign(self._v)
|
self._v = get_v(self.object:get_velocity()) * get_sign(self._v)
|
||||||
|
local on_water = true
|
||||||
|
local in_water = false
|
||||||
|
local v_factor = 1
|
||||||
|
local v_slowdown = 0.02
|
||||||
|
local p = self.object:get_pos()
|
||||||
|
if (not is_water({x=p.x, y=p.y-boat_y_offset, z=p.z})) then
|
||||||
|
on_water = false
|
||||||
|
v_factor = 0.5
|
||||||
|
v_slowdown = 0.04
|
||||||
|
elseif (is_water({x=p.x, y=p.y-boat_y_offset+1, z=p.z})) then
|
||||||
|
on_water = false
|
||||||
|
in_water = true
|
||||||
|
v_factor = 0.75
|
||||||
|
v_slowdown = 0.05
|
||||||
|
end
|
||||||
|
|
||||||
if self._driver then
|
if self._driver then
|
||||||
local ctrl = self._driver:get_player_control()
|
local ctrl = self._driver:get_player_control()
|
||||||
local yaw = self.object:getyaw()
|
local yaw = self.object:get_yaw()
|
||||||
if ctrl.up then
|
if ctrl.up then
|
||||||
-- Forwards
|
-- Forwards
|
||||||
self._v = self._v + 0.1
|
self._v = self._v + 0.1 * v_factor
|
||||||
|
|
||||||
-- Paddling animation
|
-- Paddling animation
|
||||||
if self._animation ~= 1 then
|
if self._animation ~= 1 then
|
||||||
|
@ -158,7 +177,7 @@ function boat.on_step(self, dtime)
|
||||||
end
|
end
|
||||||
elseif ctrl.down then
|
elseif ctrl.down then
|
||||||
-- Backwards
|
-- Backwards
|
||||||
self._v = self._v - 0.1
|
self._v = self._v - 0.1 * v_factor
|
||||||
|
|
||||||
-- Paddling animation, reversed
|
-- Paddling animation, reversed
|
||||||
if self._animation ~= -1 then
|
if self._animation ~= -1 then
|
||||||
|
@ -174,15 +193,15 @@ function boat.on_step(self, dtime)
|
||||||
end
|
end
|
||||||
if ctrl.left then
|
if ctrl.left then
|
||||||
if self._v < 0 then
|
if self._v < 0 then
|
||||||
self.object:setyaw(yaw - (1 + dtime) * 0.03)
|
self.object:set_yaw(yaw - (1 + dtime) * 0.03 * v_factor)
|
||||||
else
|
else
|
||||||
self.object:setyaw(yaw + (1 + dtime) * 0.03)
|
self.object:set_yaw(yaw + (1 + dtime) * 0.03 * v_factor)
|
||||||
end
|
end
|
||||||
elseif ctrl.right then
|
elseif ctrl.right then
|
||||||
if self._v < 0 then
|
if self._v < 0 then
|
||||||
self.object:setyaw(yaw + (1 + dtime) * 0.03)
|
self.object:set_yaw(yaw + (1 + dtime) * 0.03 * v_factor)
|
||||||
else
|
else
|
||||||
self.object:setyaw(yaw - (1 + dtime) * 0.03)
|
self.object:set_yaw(yaw - (1 + dtime) * 0.03 * v_factor)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
@ -192,73 +211,65 @@ function boat.on_step(self, dtime)
|
||||||
self._animation = 0
|
self._animation = 0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
local velo = self.object:getvelocity()
|
|
||||||
if self._v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then
|
|
||||||
self.object:setpos(self.object:get_pos())
|
|
||||||
return
|
|
||||||
end
|
|
||||||
local s = get_sign(self._v)
|
local s = get_sign(self._v)
|
||||||
self._v = self._v - 0.02 * s
|
if not on_water and not in_water and math.abs(self._v) > 1.0 then
|
||||||
if s ~= get_sign(self._v) then
|
v_slowdown = math.min(math.abs(self._v) - 1.0, v_slowdown * 5)
|
||||||
self.object:setvelocity({x = 0, y = 0, z = 0})
|
elseif in_water and math.abs(self._v) > 1.5 then
|
||||||
self._v = 0
|
v_slowdown = math.min(math.abs(self._v) - 1.5, v_slowdown * 5)
|
||||||
return
|
|
||||||
end
|
end
|
||||||
if math.abs(self._v) > 5 then
|
self._v = self._v - v_slowdown * s
|
||||||
self._v = 5 * get_sign(self._v)
|
if s ~= get_sign(self._v) then
|
||||||
|
self._v = 0
|
||||||
end
|
end
|
||||||
|
|
||||||
local p = self.object:get_pos()
|
|
||||||
p.y = p.y - boat_y_offset
|
p.y = p.y - boat_y_offset
|
||||||
local new_velo
|
local new_velo
|
||||||
local new_acce = {x = 0, y = 0, z = 0}
|
local new_acce = {x = 0, y = 0, z = 0}
|
||||||
if not is_water(p) then
|
if not is_water(p) then
|
||||||
|
-- Not on water or inside water: Free fall
|
||||||
local nodedef = minetest.registered_nodes[minetest.get_node(p).name]
|
local nodedef = minetest.registered_nodes[minetest.get_node(p).name]
|
||||||
if (not nodedef) or nodedef.walkable then
|
|
||||||
self._v = 0
|
|
||||||
new_acce = {x = 0, y = 1, z = 0}
|
|
||||||
else
|
|
||||||
new_acce = {x = 0, y = -9.8, z = 0}
|
new_acce = {x = 0, y = -9.8, z = 0}
|
||||||
end
|
new_velo = get_velocity(self._v, self.object:get_yaw(),
|
||||||
new_velo = get_velocity(self._v, self.object:getyaw(),
|
self.object:get_velocity().y)
|
||||||
self.object:getvelocity().y)
|
|
||||||
self.object:setpos(self.object:get_pos())
|
|
||||||
else
|
else
|
||||||
p.y = p.y + 1
|
p.y = p.y + 1
|
||||||
if is_water(p) then
|
if is_water(p) then
|
||||||
local y = self.object:getvelocity().y
|
-- Inside water: Slowly sink
|
||||||
if y >= 5 then
|
local y = self.object:get_velocity().y
|
||||||
y = 5
|
y = y - 0.01
|
||||||
elseif y < 0 then
|
if y < -0.2 then
|
||||||
new_acce = {x = 0, y = 20, z = 0}
|
y = -0.2
|
||||||
else
|
|
||||||
new_acce = {x = 0, y = 5, z = 0}
|
|
||||||
end
|
end
|
||||||
new_velo = get_velocity(self._v, self.object:getyaw(), y)
|
|
||||||
self.object:setpos(self.object:get_pos())
|
|
||||||
else
|
|
||||||
new_acce = {x = 0, y = 0, z = 0}
|
new_acce = {x = 0, y = 0, z = 0}
|
||||||
if math.abs(self.object:getvelocity().y) < 1 then
|
new_velo = get_velocity(self._v, self.object:get_yaw(), y)
|
||||||
local pos = self.object:get_pos()
|
|
||||||
pos.y = math.floor(pos.y) + boat_y_offset
|
|
||||||
self.object:setpos(pos)
|
|
||||||
new_velo = get_velocity(self._v, self.object:getyaw(), 0)
|
|
||||||
else
|
else
|
||||||
new_velo = get_velocity(self._v, self.object:getyaw(),
|
-- On top of water
|
||||||
self.object:getvelocity().y)
|
new_acce = {x = 0, y = 0, z = 0}
|
||||||
self.object:setpos(self.object:get_pos())
|
if math.abs(self.object:get_velocity().y) < 0 then
|
||||||
|
new_velo = get_velocity(self._v, self.object:get_yaw(), 0)
|
||||||
|
else
|
||||||
|
new_velo = get_velocity(self._v, self.object:get_yaw(),
|
||||||
|
self.object:get_velocity().y)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
self.object:setvelocity(new_velo)
|
|
||||||
self.object:setacceleration(new_acce)
|
-- Terminal velocity: 8 m/s per axis of travel
|
||||||
|
for _,axis in pairs({"z","y","x"}) do
|
||||||
|
if math.abs(new_velo[axis]) > 8 then
|
||||||
|
new_velo[axis] = 8 * get_sign(new_velo[axis])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
self.object:set_velocity(new_velo)
|
||||||
|
self.object:set_acceleration(new_acce)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Register one entity for all boat types
|
-- Register one entity for all boat types
|
||||||
minetest.register_entity("mcl_boats:boat", boat)
|
minetest.register_entity("mcl_boats:boat", boat)
|
||||||
|
|
||||||
local boat_ids = { "boat", "boat_spruce", "boat_birch", "boat_jungle", "boat_acacia", "boat_dark_oak" }
|
local boat_ids = { "boat", "boat_spruce", "boat_birch", "boat_jungle", "boat_acacia", "boat_dark_oak" }
|
||||||
local names = { "Oak Boat", "Spruce Boat", "Birch Boat", "Jungle Boat", "Acacia Boat", "Dark Oak Boat" }
|
local names = { S("Oak Boat"), S("Spruce Boat"), S("Birch Boat"), S("Jungle Boat"), S("Acacia Boat"), S("Dark Oak Boat") }
|
||||||
local craftstuffs = {}
|
local craftstuffs = {}
|
||||||
if minetest.get_modpath("mcl_core") then
|
if minetest.get_modpath("mcl_core") then
|
||||||
craftstuffs = { "mcl_core:wood", "mcl_core:sprucewood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:acaciawood", "mcl_core:darkwood" }
|
craftstuffs = { "mcl_core:wood", "mcl_core:sprucewood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:acaciawood", "mcl_core:darkwood" }
|
||||||
|
@ -268,18 +279,20 @@ local images = { "oak", "spruce", "birch", "jungle", "acacia", "dark_oak" }
|
||||||
for b=1, #boat_ids do
|
for b=1, #boat_ids do
|
||||||
local itemstring = "mcl_boats:"..boat_ids[b]
|
local itemstring = "mcl_boats:"..boat_ids[b]
|
||||||
|
|
||||||
local longdesc, usagehelp, help, helpname
|
local longdesc, usagehelp, tt_help, help, helpname
|
||||||
help = false
|
help = false
|
||||||
-- Only create one help entry for all boats
|
-- Only create one help entry for all boats
|
||||||
if b == 1 then
|
if b == 1 then
|
||||||
help = true
|
help = true
|
||||||
longdesc = "Boats are used to travel on the surface of water."
|
longdesc = S("Boats are used to travel on the surface of water.")
|
||||||
usagehelp = "Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item."
|
usagehelp = S("Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.")
|
||||||
helpname = "Boat"
|
helpname = S("Boat")
|
||||||
end
|
end
|
||||||
|
tt_help = S("Water vehicle")
|
||||||
|
|
||||||
minetest.register_craftitem(itemstring, {
|
minetest.register_craftitem(itemstring, {
|
||||||
description = names[b],
|
description = names[b],
|
||||||
|
_tt_help = tt_help,
|
||||||
_doc_items_create_entry = help,
|
_doc_items_create_entry = help,
|
||||||
_doc_items_entry_name = helpname,
|
_doc_items_entry_name = helpname,
|
||||||
_doc_items_longdesc = longdesc,
|
_doc_items_longdesc = longdesc,
|
||||||
|
@ -290,7 +303,7 @@ for b=1, #boat_ids do
|
||||||
stack_max = 1,
|
stack_max = 1,
|
||||||
on_place = function(itemstack, placer, pointed_thing)
|
on_place = function(itemstack, placer, pointed_thing)
|
||||||
if pointed_thing.type ~= "node" then
|
if pointed_thing.type ~= "node" then
|
||||||
return
|
return itemstack
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Call on_rightclick if the pointed node defines it
|
-- Call on_rightclick if the pointed node defines it
|
||||||
|
@ -301,11 +314,17 @@ for b=1, #boat_ids do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if not is_water(pointed_thing.under) then
|
local pos = table.copy(pointed_thing.under)
|
||||||
return
|
local dir = vector.subtract(pointed_thing.above, pointed_thing.under)
|
||||||
|
|
||||||
|
if math.abs(dir.x) > 0.9 or math.abs(dir.z) > 0.9 then
|
||||||
|
pos = vector.add(pos, vector.multiply(dir, boat_side_offset))
|
||||||
|
elseif is_water(pos) then
|
||||||
|
pos = vector.add(pos, vector.multiply(dir, boat_y_offset))
|
||||||
|
else
|
||||||
|
pos = vector.add(pos, vector.multiply(dir, boat_y_offset_ground))
|
||||||
end
|
end
|
||||||
pointed_thing.under.y = pointed_thing.under.y + boat_y_offset
|
local boat = minetest.add_entity(pos, "mcl_boats:boat")
|
||||||
local boat = minetest.add_entity(pointed_thing.under, "mcl_boats:boat")
|
|
||||||
boat:get_luaentity()._itemstring = itemstring
|
boat:get_luaentity()._itemstring = itemstring
|
||||||
boat:set_properties({textures = { "mcl_boats_texture_"..images[b].."_boat.png" }})
|
boat:set_properties({textures = { "mcl_boats_texture_"..images[b].."_boat.png" }})
|
||||||
boat:set_yaw(placer:get_look_horizontal())
|
boat:set_yaw(placer:get_look_horizontal())
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
# textdomain: mcl_boats
|
||||||
|
Acacia Boat=Akazienboot
|
||||||
|
Birch Boat=Birkenboot
|
||||||
|
Boat=Boot
|
||||||
|
Boats are used to travel on the surface of water.=Boote werden benutzt, um sich auf der Wasseroberfläche zu bewegen.
|
||||||
|
Dark Oak Boat=Schwarzeichenboot
|
||||||
|
Jungle Boat=Dschungelboot
|
||||||
|
Oak Boat=Eichenboot
|
||||||
|
Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.=Rechtsklicken Sie auf eine Wasserquelle, um das Boot zu platzieren. Rechtsklicken Sie auf das Boot, um es zu betreten. Mit [Links] und [Rechts] lenken, mit [Vorwärts] und [Rückwärts] Geschwindigkeit regeln oder rückwärts fahren. Rechtsklicken Sie erneut auf das Boot, um es zu verlassen, schlagen Sie das Boot, um es als Gegenstand fallen zu lassen.
|
||||||
|
Spruce Boat=Fichtenboot
|
||||||
|
Water vehicle=Wasserfahrzeug
|
|
@ -0,0 +1,10 @@
|
||||||
|
# textdomain: mcl_boats
|
||||||
|
Acacia Boat=Barca de acacia
|
||||||
|
Birch Boat=Barca de abedul
|
||||||
|
Boat=Barca
|
||||||
|
Boats are used to travel on the surface of water.=Las barcas se utilizan para viajar en la superficie del agua.
|
||||||
|
Dark Oak Boat=Barca de roble oscuro
|
||||||
|
Jungle Boat=Barca de la selva
|
||||||
|
Oak Boat=Barca de roble
|
||||||
|
Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.=Haga clic derecho en una fuente de agua para colocar el barco. Haga clic derecho en el barco para entrar. Utilice [Izquierda] y [Derecha] para dirigir, [Adelante] para acelerar y [Atrás] para reducir la velocidad o retroceder. Haga clic derecho en el barco nuevamente para dejarlo, golpee el barco para que se caiga como un artículo.
|
||||||
|
Spruce Boat=Barca de abeto
|
|
@ -0,0 +1,11 @@
|
||||||
|
# textdomain: mcl_boats
|
||||||
|
Acacia Boat=
|
||||||
|
Birch Boat=
|
||||||
|
Boat=
|
||||||
|
Boats are used to travel on the surface of water.=
|
||||||
|
Dark Oak Boat=
|
||||||
|
Jungle Boat=
|
||||||
|
Oak Boat=
|
||||||
|
Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.=
|
||||||
|
Spruce Boat=
|
||||||
|
Water vehicle=
|
|
@ -1,3 +1,4 @@
|
||||||
|
local S = minetest.get_translator("mcl_falling_nodes")
|
||||||
local dmes = minetest.get_modpath("mcl_death_messages") ~= nil
|
local dmes = minetest.get_modpath("mcl_death_messages") ~= nil
|
||||||
|
|
||||||
local get_falling_depth = function(self)
|
local get_falling_depth = function(self)
|
||||||
|
@ -48,15 +49,15 @@ local deal_falling_damage = function(self, dtime)
|
||||||
-- TODO: Reduce damage if wearing a helmet
|
-- TODO: Reduce damage if wearing a helmet
|
||||||
local msg
|
local msg
|
||||||
if minetest.get_item_group(self.node.name, "anvil") ~= 0 then
|
if minetest.get_item_group(self.node.name, "anvil") ~= 0 then
|
||||||
msg = "%s was smashed by a falling anvil."
|
msg = S("@1 was smashed by a falling anvil.", v:get_player_name())
|
||||||
else
|
else
|
||||||
msg = "%s was smashed by a falling block."
|
msg = S("@1 was smashed by a falling block.", v:get_player_name())
|
||||||
end
|
end
|
||||||
if dmes then
|
if dmes then
|
||||||
mcl_death_messages.player_damage(v, string.format(msg, v:get_player_name()))
|
mcl_death_messages.player_damage(v, msg)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
v:set_hp(hp)
|
v:set_hp(hp, { type = "punch", from = "mod" })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -78,21 +79,30 @@ minetest.register_entity(":__builtin:falling_node", {
|
||||||
meta = {},
|
meta = {},
|
||||||
|
|
||||||
set_node = function(self, node, meta)
|
set_node = function(self, node, meta)
|
||||||
|
local def = minetest.registered_nodes[node.name]
|
||||||
|
-- Change falling node if definition tells us to
|
||||||
|
if def and def._mcl_falling_node_alternative then
|
||||||
|
node.name = def._mcl_falling_node_alternative
|
||||||
|
end
|
||||||
|
local glow
|
||||||
self.node = node
|
self.node = node
|
||||||
self.meta = meta or {}
|
self.meta = meta or {}
|
||||||
self.object:set_properties({
|
|
||||||
is_visible = true,
|
|
||||||
textures = {node.name},
|
|
||||||
})
|
|
||||||
local def = core.registered_nodes[node.name]
|
|
||||||
-- Set correct entity yaw
|
-- Set correct entity yaw
|
||||||
if def and node.param2 ~= 0 then
|
if def and node.param2 ~= 0 then
|
||||||
if (def.paramtype2 == "facedir" or def.paramtype2 == "colorfacedir") then
|
if (def.paramtype2 == "facedir" or def.paramtype2 == "colorfacedir") then
|
||||||
self.object:set_yaw(core.dir_to_yaw(core.facedir_to_dir(node.param2)))
|
self.object:set_yaw(minetest.dir_to_yaw(minetest.facedir_to_dir(node.param2)))
|
||||||
elseif (def.paramtype2 == "wallmounted" or def.paramtype2 == "colorwallmounted") then
|
elseif (def.paramtype2 == "wallmounted" or def.paramtype2 == "colorwallmounted") then
|
||||||
self.object:set_yaw(core.dir_to_yaw(core.wallmounted_to_dir(node.param2)))
|
self.object:set_yaw(minetest.dir_to_yaw(minetest.wallmounted_to_dir(node.param2)))
|
||||||
|
end
|
||||||
|
if def.light_source then
|
||||||
|
glow = def.light_source
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
self.object:set_properties({
|
||||||
|
is_visible = true,
|
||||||
|
textures = {node.name},
|
||||||
|
glow = glow,
|
||||||
|
})
|
||||||
end,
|
end,
|
||||||
|
|
||||||
get_staticdata = function(self)
|
get_staticdata = function(self)
|
||||||
|
@ -141,9 +151,9 @@ minetest.register_entity(":__builtin:falling_node", {
|
||||||
|
|
||||||
on_step = function(self, dtime)
|
on_step = function(self, dtime)
|
||||||
-- Set gravity
|
-- Set gravity
|
||||||
local acceleration = self.object:getacceleration()
|
local acceleration = self.object:get_acceleration()
|
||||||
if not vector.equals(acceleration, {x = 0, y = -10, z = 0}) then
|
if not vector.equals(acceleration, {x = 0, y = -10, z = 0}) then
|
||||||
self.object:setacceleration({x = 0, y = -10, z = 0})
|
self.object:set_acceleration({x = 0, y = -10, z = 0})
|
||||||
end
|
end
|
||||||
-- Turn to actual node when colliding with ground, or continue to move
|
-- Turn to actual node when colliding with ground, or continue to move
|
||||||
local pos = self.object:get_pos()
|
local pos = self.object:get_pos()
|
||||||
|
@ -200,15 +210,19 @@ minetest.register_entity(":__builtin:falling_node", {
|
||||||
for _, callback in pairs(minetest.registered_on_dignodes) do
|
for _, callback in pairs(minetest.registered_on_dignodes) do
|
||||||
callback(np, n2)
|
callback(np, n2)
|
||||||
end
|
end
|
||||||
if minetest.registered_nodes[self.node.name] then
|
local def = minetest.registered_nodes[self.node.name]
|
||||||
|
if def then
|
||||||
minetest.add_node(np, self.node)
|
minetest.add_node(np, self.node)
|
||||||
if minetest.registered_nodes[self.node.name]._mcl_after_falling then
|
if def._mcl_after_falling then
|
||||||
minetest.registered_nodes[self.node.name]._mcl_after_falling(np, get_falling_depth(self))
|
def._mcl_after_falling(np, get_falling_depth(self))
|
||||||
end
|
end
|
||||||
if self.meta then
|
if self.meta then
|
||||||
local meta = minetest.get_meta(np)
|
local meta = minetest.get_meta(np)
|
||||||
meta:from_table(self.meta)
|
meta:from_table(self.meta)
|
||||||
end
|
end
|
||||||
|
if def.sounds and def.sounds.place and def.sounds.place.name then
|
||||||
|
minetest.sound_play(def.sounds.place, {pos = np})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
-- Drop the *falling node* as an item if the destination node is NOT buildable to
|
-- Drop the *falling node* as an item if the destination node is NOT buildable to
|
||||||
|
@ -222,7 +236,7 @@ minetest.register_entity(":__builtin:falling_node", {
|
||||||
minetest.check_for_falling(np)
|
minetest.check_for_falling(np)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local vel = self.object:getvelocity()
|
local vel = self.object:get_velocity()
|
||||||
-- Fix position if entity does not move
|
-- Fix position if entity does not move
|
||||||
if vector.equals(vel, {x = 0, y = 0, z = 0}) then
|
if vector.equals(vel, {x = 0, y = 0, z = 0}) then
|
||||||
local npos = vector.round(self.object:get_pos())
|
local npos = vector.round(self.object:get_pos())
|
||||||
|
@ -238,8 +252,14 @@ minetest.register_entity(":__builtin:falling_node", {
|
||||||
local npos3 = table.copy(npos)
|
local npos3 = table.copy(npos)
|
||||||
npos3.y = npos3.y - 1
|
npos3.y = npos3.y - 1
|
||||||
minetest.add_node(npos3, self.node)
|
minetest.add_node(npos3, self.node)
|
||||||
if minetest.registered_nodes[self.node.name]._mcl_after_falling then
|
local def = minetest.registered_nodes[self.node.name]
|
||||||
minetest.registered_nodes[self.node.name]._mcl_after_falling(npos3, get_falling_depth(self))
|
if def then
|
||||||
|
if def._mcl_after_falling then
|
||||||
|
def._mcl_after_falling(npos3, get_falling_depth(self))
|
||||||
|
end
|
||||||
|
if def.sounds and def.sounds.place and def.sounds.place.name then
|
||||||
|
minetest.sound_play(def.sounds.place, {pos = np})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
deal_falling_damage(self, dtime)
|
deal_falling_damage(self, dtime)
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
# textdomain: mcl_falling_nodes
|
||||||
|
@1 was smashed by a falling anvil.=@1 wurde von einem fallenden Amboss zerschmettert.
|
||||||
|
@1 was smashed by a falling block.=@1 wurde von einem fallenden Block zerschmettert.
|
|
@ -0,0 +1,3 @@
|
||||||
|
# textdomain: mcl_falling_nodes
|
||||||
|
@1 was smashed by a falling anvil.=@1 fue aplastado por la caída de un yunque.
|
||||||
|
@1 was smashed by a falling block.=@1 fue aplastado por la caída de un bloque.
|
|
@ -0,0 +1,3 @@
|
||||||
|
# textdomain: mcl_falling_nodes
|
||||||
|
@1 was smashed by a falling anvil.=
|
||||||
|
@1 was smashed by a falling block.=
|
|
@ -98,14 +98,14 @@ minetest.register_globalstep(function(dtime)
|
||||||
local opos = object:get_pos()
|
local opos = object:get_pos()
|
||||||
local vec = vector.subtract(checkpos, opos)
|
local vec = vector.subtract(checkpos, opos)
|
||||||
vec = vector.add(opos, vector.divide(vec, 2))
|
vec = vector.add(opos, vector.divide(vec, 2))
|
||||||
object:moveto(vec)
|
object:move_to(vec)
|
||||||
|
|
||||||
|
|
||||||
--fix eternally falling items
|
--fix eternally falling items
|
||||||
minetest.after(0, function(object)
|
minetest.after(0, function(object)
|
||||||
local lua = object:get_luaentity()
|
local lua = object:get_luaentity()
|
||||||
if lua then
|
if lua then
|
||||||
object:setacceleration({x=0, y=0, z=0})
|
object:set_acceleration({x=0, y=0, z=0})
|
||||||
end
|
end
|
||||||
end, object)
|
end, object)
|
||||||
|
|
||||||
|
@ -212,7 +212,7 @@ function minetest.handle_node_drops(pos, drops, digger)
|
||||||
-- This means there is no digger. This is a special case which allows this function to be called
|
-- This means there is no digger. This is a special case which allows this function to be called
|
||||||
-- by hand. Creative Mode is intentionally ignored in this case.
|
-- by hand. Creative Mode is intentionally ignored in this case.
|
||||||
|
|
||||||
local doTileDrops = minetest.settings:get_bool("mcl_doTileDrops") or true
|
local doTileDrops = minetest.settings:get_bool("mcl_doTileDrops", true)
|
||||||
if (digger ~= nil and minetest.settings:get_bool("creative_mode")) or doTileDrops == false then
|
if (digger ~= nil and minetest.settings:get_bool("creative_mode")) or doTileDrops == false then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
@ -254,7 +254,13 @@ function minetest.handle_node_drops(pos, drops, digger)
|
||||||
local drop_item = ItemStack(item)
|
local drop_item = ItemStack(item)
|
||||||
drop_item:set_count(1)
|
drop_item:set_count(1)
|
||||||
for i=1,count do
|
for i=1,count do
|
||||||
local obj = core.add_item(pos, drop_item)
|
local dpos = table.copy(pos)
|
||||||
|
-- Apply offset for plantlike_rooted nodes because of their special shape
|
||||||
|
if nodedef and nodedef.drawtype == "plantlike_rooted" and nodedef.walkable then
|
||||||
|
dpos.y = dpos.y + 1
|
||||||
|
end
|
||||||
|
-- Spawn item and apply random speed
|
||||||
|
local obj = minetest.add_item(dpos, drop_item)
|
||||||
if obj ~= nil then
|
if obj ~= nil then
|
||||||
local x = math.random(1, 5)
|
local x = math.random(1, 5)
|
||||||
if math.random(1,2) == 1 then
|
if math.random(1,2) == 1 then
|
||||||
|
@ -264,7 +270,7 @@ function minetest.handle_node_drops(pos, drops, digger)
|
||||||
if math.random(1,2) == 1 then
|
if math.random(1,2) == 1 then
|
||||||
z = -z
|
z = -z
|
||||||
end
|
end
|
||||||
obj:setvelocity({x=1/x, y=obj:getvelocity().y, z=1/z})
|
obj:set_velocity({x=1/x, y=obj:get_velocity().y, z=1/z})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -280,12 +286,12 @@ function minetest.item_drop(itemstack, dropper, pos)
|
||||||
cs = 1
|
cs = 1
|
||||||
end
|
end
|
||||||
local item = itemstack:take_item(cs)
|
local item = itemstack:take_item(cs)
|
||||||
local obj = core.add_item(p, item)
|
local obj = minetest.add_item(p, item)
|
||||||
if obj then
|
if obj then
|
||||||
v.x = v.x*4
|
v.x = v.x*4
|
||||||
v.y = v.y*4 + 2
|
v.y = v.y*4 + 2
|
||||||
v.z = v.z*4
|
v.z = v.z*4
|
||||||
obj:setvelocity(v)
|
obj:set_velocity(v)
|
||||||
-- Force collection delay
|
-- Force collection delay
|
||||||
obj:get_luaentity()._insta_collect = false
|
obj:get_luaentity()._insta_collect = false
|
||||||
return itemstack
|
return itemstack
|
||||||
|
@ -300,12 +306,13 @@ if not time_to_live then
|
||||||
time_to_live = 300
|
time_to_live = 300
|
||||||
end
|
end
|
||||||
|
|
||||||
core.register_entity(":__builtin:item", {
|
minetest.register_entity(":__builtin:item", {
|
||||||
initial_properties = {
|
initial_properties = {
|
||||||
hp_max = 1,
|
hp_max = 1,
|
||||||
physical = true,
|
physical = true,
|
||||||
collide_with_objects = false,
|
collide_with_objects = false,
|
||||||
collisionbox = {-0.3, -0.3, -0.3, 0.3, 0.3, 0.3},
|
collisionbox = {-0.3, -0.3, -0.3, 0.3, 0.3, 0.3},
|
||||||
|
pointable = false,
|
||||||
visual = "wielditem",
|
visual = "wielditem",
|
||||||
visual_size = {x = 0.4, y = 0.4},
|
visual_size = {x = 0.4, y = 0.4},
|
||||||
textures = {""},
|
textures = {""},
|
||||||
|
@ -353,10 +360,15 @@ core.register_entity(":__builtin:item", {
|
||||||
end
|
end
|
||||||
local item_texture = nil
|
local item_texture = nil
|
||||||
local item_type = ""
|
local item_type = ""
|
||||||
if core.registered_items[itemname] then
|
if minetest.registered_items[itemname] then
|
||||||
item_texture = core.registered_items[itemname].inventory_image
|
item_texture = minetest.registered_items[itemname].inventory_image
|
||||||
item_type = core.registered_items[itemname].type
|
item_type = minetest.registered_items[itemname].type
|
||||||
description = core.registered_items[itemname].description
|
description = minetest.registered_items[itemname].description
|
||||||
|
end
|
||||||
|
local ndef = minetest.registered_items[itemname]
|
||||||
|
local glow
|
||||||
|
if ndef then
|
||||||
|
glow = ndef.light_source
|
||||||
end
|
end
|
||||||
local prop = {
|
local prop = {
|
||||||
is_visible = true,
|
is_visible = true,
|
||||||
|
@ -366,6 +378,7 @@ core.register_entity(":__builtin:item", {
|
||||||
collisionbox = {-c, -c, -c, c, c, c},
|
collisionbox = {-c, -c, -c, c, c, c},
|
||||||
automatic_rotate = math.pi * 0.5,
|
automatic_rotate = math.pi * 0.5,
|
||||||
infotext = description,
|
infotext = description,
|
||||||
|
glow = glow,
|
||||||
}
|
}
|
||||||
self.object:set_properties(prop)
|
self.object:set_properties(prop)
|
||||||
if item_drop_settings.random_item_velocity == true then
|
if item_drop_settings.random_item_velocity == true then
|
||||||
|
@ -373,7 +386,7 @@ core.register_entity(":__builtin:item", {
|
||||||
if not self or not self.object or not self.object:get_luaentity() then
|
if not self or not self.object or not self.object:get_luaentity() then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local vel = self.object:getvelocity()
|
local vel = self.object:get_velocity()
|
||||||
if vel and vel.x == 0 and vel.z == 0 then
|
if vel and vel.x == 0 and vel.z == 0 then
|
||||||
local x = math.random(1, 5)
|
local x = math.random(1, 5)
|
||||||
if math.random(1,2) == 1 then
|
if math.random(1,2) == 1 then
|
||||||
|
@ -384,7 +397,7 @@ core.register_entity(":__builtin:item", {
|
||||||
z = -z
|
z = -z
|
||||||
end
|
end
|
||||||
local y = math.random(2,4)
|
local y = math.random(2,4)
|
||||||
self.object:setvelocity({x=1/x, y=y, z=1/z})
|
self.object:set_velocity({x=1/x, y=y, z=1/z})
|
||||||
end
|
end
|
||||||
end, self)
|
end, self)
|
||||||
end
|
end
|
||||||
|
@ -392,7 +405,7 @@ core.register_entity(":__builtin:item", {
|
||||||
end,
|
end,
|
||||||
|
|
||||||
get_staticdata = function(self)
|
get_staticdata = function(self)
|
||||||
return core.serialize({
|
return minetest.serialize({
|
||||||
itemstring = self.itemstring,
|
itemstring = self.itemstring,
|
||||||
always_collect = self.always_collect,
|
always_collect = self.always_collect,
|
||||||
age = self.age,
|
age = self.age,
|
||||||
|
@ -404,7 +417,7 @@ core.register_entity(":__builtin:item", {
|
||||||
|
|
||||||
on_activate = function(self, staticdata, dtime_s)
|
on_activate = function(self, staticdata, dtime_s)
|
||||||
if string.sub(staticdata, 1, string.len("return")) == "return" then
|
if string.sub(staticdata, 1, string.len("return")) == "return" then
|
||||||
local data = core.deserialize(staticdata)
|
local data = minetest.deserialize(staticdata)
|
||||||
if data and type(data) == "table" then
|
if data and type(data) == "table" then
|
||||||
self.itemstring = data.itemstring
|
self.itemstring = data.itemstring
|
||||||
self.always_collect = data.always_collect
|
self.always_collect = data.always_collect
|
||||||
|
@ -444,8 +457,8 @@ core.register_entity(":__builtin:item", {
|
||||||
self._forcetimer = 0
|
self._forcetimer = 0
|
||||||
|
|
||||||
self.object:set_armor_groups({immortal = 1})
|
self.object:set_armor_groups({immortal = 1})
|
||||||
self.object:setvelocity({x = 0, y = 2, z = 0})
|
self.object:set_velocity({x = 0, y = 2, z = 0})
|
||||||
self.object:setacceleration({x = 0, y = -get_gravity(), z = 0})
|
self.object:set_acceleration({x = 0, y = -get_gravity(), z = 0})
|
||||||
self:set_item(self.itemstring)
|
self:set_item(self.itemstring)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
@ -509,7 +522,7 @@ core.register_entity(":__builtin:item", {
|
||||||
end
|
end
|
||||||
|
|
||||||
local p = self.object:get_pos()
|
local p = self.object:get_pos()
|
||||||
local node = core.get_node_or_nil(p)
|
local node = minetest.get_node_or_nil(p)
|
||||||
local in_unloaded = (node == nil)
|
local in_unloaded = (node == nil)
|
||||||
|
|
||||||
-- If no collector was found for a long enough time, declare the magnet as disabled
|
-- If no collector was found for a long enough time, declare the magnet as disabled
|
||||||
|
@ -542,8 +555,8 @@ core.register_entity(":__builtin:item", {
|
||||||
-- Push item out when stuck inside solid opaque node
|
-- Push item out when stuck inside solid opaque node
|
||||||
if def and def.walkable and def.groups and def.groups.opaque == 1 then
|
if def and def.walkable and def.groups and def.groups.opaque == 1 then
|
||||||
local shootdir
|
local shootdir
|
||||||
local cx = p.x % 1
|
local cx = (p.x % 1) - 0.5
|
||||||
local cz = p.z % 1
|
local cz = (p.z % 1) - 0.5
|
||||||
local order = {}
|
local order = {}
|
||||||
|
|
||||||
-- First prepare the order in which the 4 sides are to be checked.
|
-- First prepare the order in which the 4 sides are to be checked.
|
||||||
|
@ -551,7 +564,7 @@ core.register_entity(":__builtin:item", {
|
||||||
-- 2nd: other direction
|
-- 2nd: other direction
|
||||||
-- 3rd and 4th: other axis
|
-- 3rd and 4th: other axis
|
||||||
local cxcz = function(o, cw, one, zero)
|
local cxcz = function(o, cw, one, zero)
|
||||||
if cw > 0 then
|
if cw < 0 then
|
||||||
table.insert(o, { [one]=1, y=0, [zero]=0 })
|
table.insert(o, { [one]=1, y=0, [zero]=0 })
|
||||||
table.insert(o, { [one]=-1, y=0, [zero]=0 })
|
table.insert(o, { [one]=-1, y=0, [zero]=0 })
|
||||||
else
|
else
|
||||||
|
@ -560,7 +573,7 @@ core.register_entity(":__builtin:item", {
|
||||||
end
|
end
|
||||||
return o
|
return o
|
||||||
end
|
end
|
||||||
if math.abs(cx) > math.abs(cz) then
|
if math.abs(cx) < math.abs(cz) then
|
||||||
order = cxcz(order, cx, "x", "z")
|
order = cxcz(order, cx, "x", "z")
|
||||||
order = cxcz(order, cz, "z", "x")
|
order = cxcz(order, cz, "z", "x")
|
||||||
else
|
else
|
||||||
|
@ -589,8 +602,8 @@ core.register_entity(":__builtin:item", {
|
||||||
|
|
||||||
-- Set new item moving speed accordingly
|
-- Set new item moving speed accordingly
|
||||||
local newv = vector.multiply(shootdir, 3)
|
local newv = vector.multiply(shootdir, 3)
|
||||||
self.object:setacceleration({x = 0, y = 0, z = 0})
|
self.object:set_acceleration({x = 0, y = 0, z = 0})
|
||||||
self.object:setvelocity(newv)
|
self.object:set_velocity(newv)
|
||||||
|
|
||||||
disable_physics(self.object, self, false, false)
|
disable_physics(self.object, self, false, false)
|
||||||
|
|
||||||
|
@ -643,8 +656,8 @@ core.register_entity(":__builtin:item", {
|
||||||
local f = 1.39
|
local f = 1.39
|
||||||
-- Set new item moving speed into the direciton of the liquid
|
-- Set new item moving speed into the direciton of the liquid
|
||||||
local newv = vector.multiply(vec, f)
|
local newv = vector.multiply(vec, f)
|
||||||
self.object:setacceleration({x = 0, y = 0, z = 0})
|
self.object:set_acceleration({x = 0, y = 0, z = 0})
|
||||||
self.object:setvelocity({x = newv.x, y = -0.22, z = newv.z})
|
self.object:set_velocity({x = newv.x, y = -0.22, z = newv.z})
|
||||||
|
|
||||||
self.physical_state = true
|
self.physical_state = true
|
||||||
self._flowing = true
|
self._flowing = true
|
||||||
|
@ -662,13 +675,13 @@ core.register_entity(":__builtin:item", {
|
||||||
|
|
||||||
-- If node is not registered or node is walkably solid and resting on nodebox
|
-- If node is not registered or node is walkably solid and resting on nodebox
|
||||||
local nn = minetest.get_node({x=p.x, y=p.y-0.5, z=p.z}).name
|
local nn = minetest.get_node({x=p.x, y=p.y-0.5, z=p.z}).name
|
||||||
local v = self.object:getvelocity()
|
local v = self.object:get_velocity()
|
||||||
|
|
||||||
if not core.registered_nodes[nn] or core.registered_nodes[nn].walkable and v.y == 0 then
|
if not minetest.registered_nodes[nn] or minetest.registered_nodes[nn].walkable and v.y == 0 then
|
||||||
if self.physical_state then
|
if self.physical_state then
|
||||||
local own_stack = ItemStack(self.object:get_luaentity().itemstring)
|
local own_stack = ItemStack(self.object:get_luaentity().itemstring)
|
||||||
-- Merge with close entities of the same item
|
-- Merge with close entities of the same item
|
||||||
for _, object in ipairs(core.get_objects_inside_radius(p, 0.8)) do
|
for _, object in ipairs(minetest.get_objects_inside_radius(p, 0.8)) do
|
||||||
local obj = object:get_luaentity()
|
local obj = object:get_luaentity()
|
||||||
if obj and obj.name == "__builtin:item"
|
if obj and obj.name == "__builtin:item"
|
||||||
and obj.physical_state == false then
|
and obj.physical_state == false then
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
local S = minetest.get_translator("mcl_minecarts")
|
||||||
|
|
||||||
mcl_minecarts = {}
|
mcl_minecarts = {}
|
||||||
mcl_minecarts.modpath = minetest.get_modpath("mcl_minecarts")
|
mcl_minecarts.modpath = minetest.get_modpath("mcl_minecarts")
|
||||||
mcl_minecarts.speed_max = 10
|
mcl_minecarts.speed_max = 10
|
||||||
|
@ -6,10 +8,50 @@ mcl_minecarts.check_float_time = 15
|
||||||
dofile(mcl_minecarts.modpath.."/functions.lua")
|
dofile(mcl_minecarts.modpath.."/functions.lua")
|
||||||
dofile(mcl_minecarts.modpath.."/rails.lua")
|
dofile(mcl_minecarts.modpath.."/rails.lua")
|
||||||
|
|
||||||
|
local function detach_driver(self)
|
||||||
|
if not self._driver then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
mcl_player.player_attached[self._driver] = nil
|
||||||
|
local player = minetest.get_player_by_name(self._driver)
|
||||||
|
self._driver = nil
|
||||||
|
self._start_pos = nil
|
||||||
|
if player then
|
||||||
|
player:set_detach()
|
||||||
|
player:set_eye_offset({x=0, y=0, z=0},{x=0, y=0, z=0})
|
||||||
|
mcl_player.player_set_animation(player, "stand" , 30)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function activate_tnt_minecart(self, timer)
|
||||||
|
if self._boomtimer then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
self.object:set_armor_groups({immortal=1})
|
||||||
|
if timer then
|
||||||
|
self._boomtimer = timer
|
||||||
|
else
|
||||||
|
self._boomtimer = tnt.BOOMTIMER
|
||||||
|
end
|
||||||
|
self.object:set_properties({textures = {
|
||||||
|
"mcl_tnt_blink.png",
|
||||||
|
"mcl_tnt_blink.png",
|
||||||
|
"mcl_tnt_blink.png",
|
||||||
|
"mcl_tnt_blink.png",
|
||||||
|
"mcl_tnt_blink.png",
|
||||||
|
"mcl_tnt_blink.png",
|
||||||
|
"mcl_minecarts_minecart.png",
|
||||||
|
}})
|
||||||
|
self._blinktimer = tnt.BLINKTIMER
|
||||||
|
minetest.sound_play("tnt_ignite", {pos = self.object:get_pos(), gain = 1.0, max_hear_distance = 15})
|
||||||
|
end
|
||||||
|
|
||||||
|
local activate_normal_minecart = detach_driver
|
||||||
|
|
||||||
-- Table for item-to-entity mapping. Keys: itemstring, Values: Corresponding entity ID
|
-- Table for item-to-entity mapping. Keys: itemstring, Values: Corresponding entity ID
|
||||||
local entity_mapping = {}
|
local entity_mapping = {}
|
||||||
|
|
||||||
local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
local function register_entity(entity_id, mesh, textures, drop, on_rightclick, on_activate_by_rail)
|
||||||
local cart = {
|
local cart = {
|
||||||
physical = false,
|
physical = false,
|
||||||
collisionbox = {-10/16., -0.5, -10/16, 10/16, 0.25, 10/16},
|
collisionbox = {-10/16., -0.5, -10/16, 10/16, 0.25, 10/16},
|
||||||
|
@ -25,6 +67,10 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
||||||
_velocity = {x=0, y=0, z=0}, -- only used on punch
|
_velocity = {x=0, y=0, z=0}, -- only used on punch
|
||||||
_start_pos = nil, -- Used to calculate distance for “On A Rail” achievement
|
_start_pos = nil, -- Used to calculate distance for “On A Rail” achievement
|
||||||
_last_float_check = nil, -- timestamp of last time the cart was checked to be still on a rail
|
_last_float_check = nil, -- timestamp of last time the cart was checked to be still on a rail
|
||||||
|
_fueltime = nil, -- how many seconds worth of fuel is left. Only used by minecart with furnace
|
||||||
|
_boomtimer = nil, -- how many seconds are left before exploding
|
||||||
|
_blinktimer = nil, -- how many seconds are left before TNT blinking
|
||||||
|
_blink = false, -- is TNT blink texture active?
|
||||||
_old_dir = {x=0, y=0, z=0},
|
_old_dir = {x=0, y=0, z=0},
|
||||||
_old_pos = nil,
|
_old_pos = nil,
|
||||||
_old_vel = {x=0, y=0, z=0},
|
_old_vel = {x=0, y=0, z=0},
|
||||||
|
@ -33,11 +79,21 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
||||||
}
|
}
|
||||||
|
|
||||||
function cart:on_activate(staticdata, dtime_s)
|
function cart:on_activate(staticdata, dtime_s)
|
||||||
|
-- Initialize
|
||||||
local data = minetest.deserialize(staticdata)
|
local data = minetest.deserialize(staticdata)
|
||||||
if type(data) == "table" then
|
if type(data) == "table" then
|
||||||
self._railtype = data._railtype
|
self._railtype = data._railtype
|
||||||
end
|
end
|
||||||
self.object:set_armor_groups({immortal=1})
|
self.object:set_armor_groups({immortal=1})
|
||||||
|
|
||||||
|
-- Activate cart if on activator rail
|
||||||
|
if self.on_activate_by_rail then
|
||||||
|
local pos = self.object:get_pos()
|
||||||
|
local node = minetest.get_node(vector.floor(pos))
|
||||||
|
if node.name == "mcl_minecarts:activator_rail_on" then
|
||||||
|
self:on_activate_by_rail()
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function cart:on_punch(puncher, time_from_last_punch, tool_capabilities, direction)
|
function cart:on_punch(puncher, time_from_last_punch, tool_capabilities, direction)
|
||||||
|
@ -58,17 +114,13 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if puncher:get_player_control().sneak then
|
-- Punch+sneak: Pick up minecart (unless TNT was ignited)
|
||||||
|
if puncher:get_player_control().sneak and not self._boomtimer then
|
||||||
if self._driver then
|
if self._driver then
|
||||||
if self._old_pos then
|
if self._old_pos then
|
||||||
self.object:setpos(self._old_pos)
|
self.object:set_pos(self._old_pos)
|
||||||
end
|
|
||||||
mcl_player.player_attached[self._driver] = nil
|
|
||||||
local player = minetest.get_player_by_name(self._driver)
|
|
||||||
if player then
|
|
||||||
player:set_detach()
|
|
||||||
player:set_eye_offset({x=0, y=0, z=0},{x=0, y=0, z=0})
|
|
||||||
end
|
end
|
||||||
|
detach_driver(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Disable detector rail
|
-- Disable detector rail
|
||||||
|
@ -98,7 +150,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local vel = self.object:getvelocity()
|
local vel = self.object:get_velocity()
|
||||||
if puncher:get_player_name() == self._driver then
|
if puncher:get_player_name() == self._driver then
|
||||||
if math.abs(vel.x + vel.z) > 7 then
|
if math.abs(vel.x + vel.z) > 7 then
|
||||||
return
|
return
|
||||||
|
@ -120,8 +172,10 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
||||||
self._punched = true
|
self._punched = true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
cart.on_activate_by_rail = on_activate_by_rail
|
||||||
|
|
||||||
function cart:on_step(dtime)
|
function cart:on_step(dtime)
|
||||||
local vel = self.object:getvelocity()
|
local vel = self.object:get_velocity()
|
||||||
local update = {}
|
local update = {}
|
||||||
if self._last_float_check == nil then
|
if self._last_float_check == nil then
|
||||||
self._last_float_check = 0
|
self._last_float_check = 0
|
||||||
|
@ -139,7 +193,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
||||||
-- Detach driver
|
-- Detach driver
|
||||||
if self._driver then
|
if self._driver then
|
||||||
if self._old_pos then
|
if self._old_pos then
|
||||||
self.object:setpos(self._old_pos)
|
self.object:set_pos(self._old_pos)
|
||||||
end
|
end
|
||||||
mcl_player.player_attached[self._driver] = nil
|
mcl_player.player_attached[self._driver] = nil
|
||||||
local player = minetest.get_player_by_name(self._driver)
|
local player = minetest.get_player_by_name(self._driver)
|
||||||
|
@ -149,6 +203,13 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Explode if already ignited
|
||||||
|
if self._boomtimer then
|
||||||
|
self.object:remove()
|
||||||
|
tnt.boom(pos)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
-- Drop items and remove cart entity
|
-- Drop items and remove cart entity
|
||||||
if not minetest.settings:get_bool("creative_mode") then
|
if not minetest.settings:get_bool("creative_mode") then
|
||||||
for d=1, #drop do
|
for d=1, #drop do
|
||||||
|
@ -162,11 +223,74 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
||||||
self._last_float_check = 0
|
self._last_float_check = 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Update furnace stuff
|
||||||
|
if self._fueltime and self._fueltime > 0 then
|
||||||
|
self._fueltime = self._fueltime - dtime
|
||||||
|
if self._fueltime <= 0 then
|
||||||
|
self.object:set_properties({textures =
|
||||||
|
{
|
||||||
|
"default_furnace_top.png",
|
||||||
|
"default_furnace_top.png",
|
||||||
|
"default_furnace_front.png",
|
||||||
|
"default_furnace_side.png",
|
||||||
|
"default_furnace_side.png",
|
||||||
|
"default_furnace_side.png",
|
||||||
|
"mcl_minecarts_minecart.png",
|
||||||
|
}})
|
||||||
|
self._fueltime = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local has_fuel = self._fueltime and self._fueltime > 0
|
||||||
|
|
||||||
|
-- Update TNT stuff
|
||||||
|
if self._boomtimer then
|
||||||
|
-- Explode
|
||||||
|
self._boomtimer = self._boomtimer - dtime
|
||||||
|
local pos = self.object:get_pos()
|
||||||
|
if self._boomtimer <= 0 then
|
||||||
|
self.object:remove()
|
||||||
|
tnt.boom(pos)
|
||||||
|
return
|
||||||
|
else
|
||||||
|
tnt.smoke_step(pos)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if self._blinktimer then
|
||||||
|
self._blinktimer = self._blinktimer - dtime
|
||||||
|
if self._blinktimer <= 0 then
|
||||||
|
self._blink = not self._blink
|
||||||
|
if self._blink then
|
||||||
|
self.object:set_properties({textures =
|
||||||
|
{
|
||||||
|
"default_tnt_top.png",
|
||||||
|
"default_tnt_bottom.png",
|
||||||
|
"default_tnt_side.png",
|
||||||
|
"default_tnt_side.png",
|
||||||
|
"default_tnt_side.png",
|
||||||
|
"default_tnt_side.png",
|
||||||
|
"mcl_minecarts_minecart.png",
|
||||||
|
}})
|
||||||
|
else
|
||||||
|
self.object:set_properties({textures =
|
||||||
|
{
|
||||||
|
"mcl_tnt_blink.png",
|
||||||
|
"mcl_tnt_blink.png",
|
||||||
|
"mcl_tnt_blink.png",
|
||||||
|
"mcl_tnt_blink.png",
|
||||||
|
"mcl_tnt_blink.png",
|
||||||
|
"mcl_tnt_blink.png",
|
||||||
|
"mcl_minecarts_minecart.png",
|
||||||
|
}})
|
||||||
|
end
|
||||||
|
self._blinktimer = tnt.BLINKTIMER
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if self._punched then
|
if self._punched then
|
||||||
vel = vector.add(vel, self._velocity)
|
vel = vector.add(vel, self._velocity)
|
||||||
self.object:setvelocity(vel)
|
self.object:set_velocity(vel)
|
||||||
self._old_dir.y = 0
|
self._old_dir.y = 0
|
||||||
elseif vector.equals(vel, {x=0, y=0, z=0}) then
|
elseif vector.equals(vel, {x=0, y=0, z=0}) and (not has_fuel) then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -177,7 +301,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
||||||
if self._old_pos and not self._punched then
|
if self._old_pos and not self._punched then
|
||||||
local flo_pos = vector.floor(pos)
|
local flo_pos = vector.floor(pos)
|
||||||
local flo_old = vector.floor(self._old_pos)
|
local flo_old = vector.floor(self._old_pos)
|
||||||
if vector.equals(flo_pos, flo_old) then
|
if vector.equals(flo_pos, flo_old) and (not has_fuel) then
|
||||||
return
|
return
|
||||||
-- Prevent querying the same node over and over again
|
-- Prevent querying the same node over and over again
|
||||||
end
|
end
|
||||||
|
@ -202,6 +326,10 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
||||||
minetest.swap_node(rou_old, newnode)
|
minetest.swap_node(rou_old, newnode)
|
||||||
mesecon.receptor_off(rou_old)
|
mesecon.receptor_off(rou_old)
|
||||||
end
|
end
|
||||||
|
-- Activate minecart if on activator rail
|
||||||
|
if node_old.name == "mcl_minecarts:activator_rail_on" and self.on_activate_by_rail then
|
||||||
|
self:on_activate_by_rail()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local ctrl, player = nil, nil
|
local ctrl, player = nil, nil
|
||||||
|
@ -217,8 +345,8 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
||||||
(self._old_vel.x * vel.x < 0 or self._old_vel.z * vel.z < 0) then
|
(self._old_vel.x * vel.x < 0 or self._old_vel.z * vel.z < 0) then
|
||||||
self._old_vel = {x = 0, y = 0, z = 0}
|
self._old_vel = {x = 0, y = 0, z = 0}
|
||||||
self._old_pos = pos
|
self._old_pos = pos
|
||||||
self.object:setvelocity(vector.new())
|
self.object:set_velocity(vector.new())
|
||||||
self.object:setacceleration(vector.new())
|
self.object:set_acceleration(vector.new())
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
self._old_vel = vector.new(vel)
|
self._old_vel = vector.new(vel)
|
||||||
|
@ -255,7 +383,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
||||||
end
|
end
|
||||||
|
|
||||||
local new_acc = {x=0, y=0, z=0}
|
local new_acc = {x=0, y=0, z=0}
|
||||||
if vector.equals(dir, {x=0, y=0, z=0}) then
|
if vector.equals(dir, {x=0, y=0, z=0}) and not has_fuel then
|
||||||
vel = {x=0, y=0, z=0}
|
vel = {x=0, y=0, z=0}
|
||||||
update.vel = true
|
update.vel = true
|
||||||
else
|
else
|
||||||
|
@ -283,7 +411,9 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
||||||
local acc = dir.y * -1.8
|
local acc = dir.y * -1.8
|
||||||
|
|
||||||
local speed_mod = minetest.registered_nodes[minetest.get_node(pos).name]._rail_acceleration
|
local speed_mod = minetest.registered_nodes[minetest.get_node(pos).name]._rail_acceleration
|
||||||
if speed_mod and speed_mod ~= 0 then
|
if has_fuel then
|
||||||
|
acc = acc + 0.2
|
||||||
|
elseif speed_mod and speed_mod ~= 0 then
|
||||||
acc = acc + speed_mod
|
acc = acc + speed_mod
|
||||||
else
|
else
|
||||||
acc = acc - 0.4
|
acc = acc - 0.4
|
||||||
|
@ -292,7 +422,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
||||||
new_acc = vector.multiply(dir, acc)
|
new_acc = vector.multiply(dir, acc)
|
||||||
end
|
end
|
||||||
|
|
||||||
self.object:setacceleration(new_acc)
|
self.object:set_acceleration(new_acc)
|
||||||
self._old_pos = vector.new(pos)
|
self._old_pos = vector.new(pos)
|
||||||
self._old_dir = vector.new(dir)
|
self._old_dir = vector.new(dir)
|
||||||
self._old_switch = last_switch
|
self._old_switch = last_switch
|
||||||
|
@ -321,7 +451,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
||||||
elseif dir.z < 0 then
|
elseif dir.z < 0 then
|
||||||
yaw = 1
|
yaw = 1
|
||||||
end
|
end
|
||||||
self.object:setyaw(yaw * math.pi)
|
self.object:set_yaw(yaw * math.pi)
|
||||||
end
|
end
|
||||||
|
|
||||||
if self._punched then
|
if self._punched then
|
||||||
|
@ -341,9 +471,9 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
||||||
end
|
end
|
||||||
self.object:set_animation(anim, 1, 0)
|
self.object:set_animation(anim, 1, 0)
|
||||||
|
|
||||||
self.object:setvelocity(vel)
|
self.object:set_velocity(vel)
|
||||||
if update.pos then
|
if update.pos then
|
||||||
self.object:setpos(pos)
|
self.object:set_pos(pos)
|
||||||
end
|
end
|
||||||
update = nil
|
update = nil
|
||||||
end
|
end
|
||||||
|
@ -387,7 +517,7 @@ mcl_minecarts.place_minecart = function(itemstack, pointed_thing)
|
||||||
le._railtype = railtype
|
le._railtype = railtype
|
||||||
end
|
end
|
||||||
local cart_dir = mcl_minecarts:get_rail_direction(railpos, {x=1, y=0, z=0}, nil, nil, railtype)
|
local cart_dir = mcl_minecarts:get_rail_direction(railpos, {x=1, y=0, z=0}, nil, nil, railtype)
|
||||||
cart:setyaw(minetest.dir_to_yaw(cart_dir))
|
cart:set_yaw(minetest.dir_to_yaw(cart_dir))
|
||||||
|
|
||||||
if not minetest.settings:get_bool("creative_mode") then
|
if not minetest.settings:get_bool("creative_mode") then
|
||||||
itemstack:take_item()
|
itemstack:take_item()
|
||||||
|
@ -396,7 +526,7 @@ mcl_minecarts.place_minecart = function(itemstack, pointed_thing)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
local register_craftitem = function(itemstring, entity_id, description, longdesc, usagehelp, icon, creative)
|
local register_craftitem = function(itemstring, entity_id, description, tt_help, longdesc, usagehelp, icon, creative)
|
||||||
entity_mapping[itemstring] = entity_id
|
entity_mapping[itemstring] = entity_id
|
||||||
|
|
||||||
local groups = { minecart = 1, transport = 1 }
|
local groups = { minecart = 1, transport = 1 }
|
||||||
|
@ -436,6 +566,7 @@ local register_craftitem = function(itemstring, entity_id, description, longdesc
|
||||||
groups = groups,
|
groups = groups,
|
||||||
}
|
}
|
||||||
def.description = description
|
def.description = description
|
||||||
|
def._tt_help = tt_help
|
||||||
def._doc_items_longdesc = longdesc
|
def._doc_items_longdesc = longdesc
|
||||||
def._doc_items_usagehelp = usagehelp
|
def._doc_items_usagehelp = usagehelp
|
||||||
def.inventory_image = icon
|
def.inventory_image = icon
|
||||||
|
@ -458,9 +589,9 @@ Register a minecart
|
||||||
* on_activate_by_rail: Called when above activator rail
|
* on_activate_by_rail: Called when above activator rail
|
||||||
* creative: If false, don't show in Creative Inventory
|
* creative: If false, don't show in Creative Inventory
|
||||||
]]
|
]]
|
||||||
local function register_minecart(itemstring, entity_id, description, longdesc, usagehelp, mesh, textures, icon, drop, on_rightclick, on_activate_by_rail, creative)
|
local function register_minecart(itemstring, entity_id, description, tt_help, longdesc, usagehelp, mesh, textures, icon, drop, on_rightclick, on_activate_by_rail, creative)
|
||||||
register_entity(entity_id, mesh, textures, drop, on_rightclick)
|
register_entity(entity_id, mesh, textures, drop, on_rightclick, on_activate_by_rail)
|
||||||
register_craftitem(itemstring, entity_id, description, longdesc, usagehelp, icon, creative)
|
register_craftitem(itemstring, entity_id, description, tt_help, longdesc, usagehelp, icon, creative)
|
||||||
if minetest.get_modpath("doc_identifier") ~= nil then
|
if minetest.get_modpath("doc_identifier") ~= nil then
|
||||||
doc.sub.identifier.register_object(entity_id, "craftitems", itemstring)
|
doc.sub.identifier.register_object(entity_id, "craftitems", itemstring)
|
||||||
end
|
end
|
||||||
|
@ -470,11 +601,13 @@ end
|
||||||
register_minecart(
|
register_minecart(
|
||||||
"mcl_minecarts:minecart",
|
"mcl_minecarts:minecart",
|
||||||
"mcl_minecarts:minecart",
|
"mcl_minecarts:minecart",
|
||||||
"Minecart",
|
S("Minecart"),
|
||||||
"Minecarts can be used for a quick transportion on rails." .. "\n" ..
|
S("Vehicle for fast travel on rails"),
|
||||||
"Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type.",
|
S("Minecarts can be used for a quick transportion on rails.") .. "\n" ..
|
||||||
"You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving." .. "\n" ..
|
S("Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type."),
|
||||||
"To obtain the minecart, punch it while holding down the sneak key.",
|
S("You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.") .. "\n" ..
|
||||||
|
S("To obtain the minecart, punch it while holding down the sneak key.") .. "\n" ..
|
||||||
|
S("If it moves over a powered activator rail, you'll get ejected."),
|
||||||
"mcl_minecarts_minecart.b3d",
|
"mcl_minecarts_minecart.b3d",
|
||||||
{"mcl_minecarts_minecart.png"},
|
{"mcl_minecarts_minecart.png"},
|
||||||
"mcl_minecarts_minecart_normal.png",
|
"mcl_minecarts_minecart_normal.png",
|
||||||
|
@ -486,15 +619,12 @@ register_minecart(
|
||||||
end
|
end
|
||||||
local player_name = clicker:get_player_name()
|
local player_name = clicker:get_player_name()
|
||||||
if self._driver and player_name == self._driver then
|
if self._driver and player_name == self._driver then
|
||||||
self._driver = nil
|
detach_driver(self)
|
||||||
self._start_pos = nil
|
|
||||||
clicker:set_detach()
|
|
||||||
clicker:set_eye_offset({x=0, y=0, z=0},{x=0, y=0, z=0})
|
|
||||||
elseif not self._driver then
|
elseif not self._driver then
|
||||||
self._driver = player_name
|
self._driver = player_name
|
||||||
self._start_pos = self.object:get_pos()
|
self._start_pos = self.object:get_pos()
|
||||||
mcl_player.player_attached[player_name] = true
|
mcl_player.player_attached[player_name] = true
|
||||||
clicker:set_attach(self.object, "", {x=0, y=8.25, z=-2}, {x=0, y=0, z=0})
|
clicker:set_attach(self.object, "", {x=0, y=-1.75, z=-2}, {x=0, y=0, z=0})
|
||||||
mcl_player.player_attached[name] = true
|
mcl_player.player_attached[name] = true
|
||||||
minetest.after(0.2, function(name)
|
minetest.after(0.2, function(name)
|
||||||
local player = minetest.get_player_by_name(name)
|
local player = minetest.get_player_by_name(name)
|
||||||
|
@ -504,15 +634,15 @@ register_minecart(
|
||||||
end
|
end
|
||||||
end, name)
|
end, name)
|
||||||
end
|
end
|
||||||
end
|
end, activate_normal_minecart
|
||||||
)
|
)
|
||||||
|
|
||||||
-- Minecart with Chest
|
-- Minecart with Chest
|
||||||
register_minecart(
|
register_minecart(
|
||||||
"mcl_minecarts:chest_minecart",
|
"mcl_minecarts:chest_minecart",
|
||||||
"mcl_minecarts:chest_minecart",
|
"mcl_minecarts:chest_minecart",
|
||||||
"Minecart with Chest",
|
S("Minecart with Chest"),
|
||||||
nil, nil,
|
nil, nil, nil,
|
||||||
"mcl_minecarts_minecart_chest.b3d",
|
"mcl_minecarts_minecart_chest.b3d",
|
||||||
{ "mcl_chests_normal.png", "mcl_minecarts_minecart.png" },
|
{ "mcl_chests_normal.png", "mcl_minecarts_minecart.png" },
|
||||||
"mcl_minecarts_minecart_chest.png",
|
"mcl_minecarts_minecart_chest.png",
|
||||||
|
@ -523,8 +653,12 @@ register_minecart(
|
||||||
register_minecart(
|
register_minecart(
|
||||||
"mcl_minecarts:furnace_minecart",
|
"mcl_minecarts:furnace_minecart",
|
||||||
"mcl_minecarts:furnace_minecart",
|
"mcl_minecarts:furnace_minecart",
|
||||||
"Minecart with Furnace",
|
S("Minecart with Furnace"),
|
||||||
nil, nil,
|
nil,
|
||||||
|
S("A minecart with furnace is a vehicle that travels on rails. It can propel itself with fuel."),
|
||||||
|
S("Place it on rails. If you give it some coal, the furnace will start burning for a long time and the minecart will be able to move itself. Punch it to get it moving.") .. "\n" ..
|
||||||
|
S("To obtain the minecart and furnace, punch them while holding down the sneak key."),
|
||||||
|
|
||||||
"mcl_minecarts_minecart_block.b3d",
|
"mcl_minecarts_minecart_block.b3d",
|
||||||
{
|
{
|
||||||
"default_furnace_top.png",
|
"default_furnace_top.png",
|
||||||
|
@ -555,9 +689,16 @@ register_minecart(
|
||||||
local inv = clicker:get_inventory()
|
local inv = clicker:get_inventory()
|
||||||
inv:set_stack("main", index, held)
|
inv:set_stack("main", index, held)
|
||||||
end
|
end
|
||||||
|
self.object:set_properties({textures =
|
||||||
-- DEBUG
|
{
|
||||||
minetest.chat_send_player(clicker:get_player_name(), "Fuel: " .. tostring(self._fueltime))
|
"default_furnace_top.png",
|
||||||
|
"default_furnace_top.png",
|
||||||
|
"default_furnace_front_active.png",
|
||||||
|
"default_furnace_side.png",
|
||||||
|
"default_furnace_side.png",
|
||||||
|
"default_furnace_side.png",
|
||||||
|
"mcl_minecarts_minecart.png",
|
||||||
|
}})
|
||||||
end
|
end
|
||||||
end, nil, false
|
end, nil, false
|
||||||
)
|
)
|
||||||
|
@ -566,8 +707,8 @@ register_minecart(
|
||||||
register_minecart(
|
register_minecart(
|
||||||
"mcl_minecarts:command_block_minecart",
|
"mcl_minecarts:command_block_minecart",
|
||||||
"mcl_minecarts:command_block_minecart",
|
"mcl_minecarts:command_block_minecart",
|
||||||
"Minecart with Command Block",
|
S("Minecart with Command Block"),
|
||||||
nil, nil,
|
nil, nil, nil,
|
||||||
"mcl_minecarts_minecart_block.b3d",
|
"mcl_minecarts_minecart_block.b3d",
|
||||||
{
|
{
|
||||||
"jeija_commandblock_off.png^[verticalframe:2:0",
|
"jeija_commandblock_off.png^[verticalframe:2:0",
|
||||||
|
@ -587,8 +728,8 @@ register_minecart(
|
||||||
register_minecart(
|
register_minecart(
|
||||||
"mcl_minecarts:hopper_minecart",
|
"mcl_minecarts:hopper_minecart",
|
||||||
"mcl_minecarts:hopper_minecart",
|
"mcl_minecarts:hopper_minecart",
|
||||||
"Minecart with Hopper",
|
S("Minecart with Hopper"),
|
||||||
nil, nil,
|
nil, nil, nil,
|
||||||
"mcl_minecarts_minecart_hopper.b3d",
|
"mcl_minecarts_minecart_hopper.b3d",
|
||||||
{
|
{
|
||||||
"mcl_hoppers_hopper_inside.png",
|
"mcl_hoppers_hopper_inside.png",
|
||||||
|
@ -605,8 +746,11 @@ register_minecart(
|
||||||
register_minecart(
|
register_minecart(
|
||||||
"mcl_minecarts:tnt_minecart",
|
"mcl_minecarts:tnt_minecart",
|
||||||
"mcl_minecarts:tnt_minecart",
|
"mcl_minecarts:tnt_minecart",
|
||||||
"Minecart with TNT",
|
S("Minecart with TNT"),
|
||||||
nil, nil,
|
S("Vehicle for fast travel on rails").."\n"..S("Can be ignited by tools or powered activator rail"),
|
||||||
|
S("A minecart with TNT is an explosive vehicle that travels on rail."),
|
||||||
|
S("Place it on rails. Punch it to move it. The TNT is ignited with a flint and steel or when the minecart is on an powered activator rail.") .. "\n" ..
|
||||||
|
S("To obtain the minecart and TNT, punch them while holding down the sneak key. You can't do this if the TNT was ignited."),
|
||||||
"mcl_minecarts_minecart_block.b3d",
|
"mcl_minecarts_minecart_block.b3d",
|
||||||
{
|
{
|
||||||
"default_tnt_top.png",
|
"default_tnt_top.png",
|
||||||
|
@ -619,8 +763,25 @@ register_minecart(
|
||||||
},
|
},
|
||||||
"mcl_minecarts_minecart_tnt.png",
|
"mcl_minecarts_minecart_tnt.png",
|
||||||
{"mcl_minecarts:minecart", "mcl_tnt:tnt"},
|
{"mcl_minecarts:minecart", "mcl_tnt:tnt"},
|
||||||
nil, nil, false
|
-- Ingite
|
||||||
)
|
function(self, clicker)
|
||||||
|
if not clicker or not clicker:is_player() then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if self._boomtimer then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local held = clicker:get_wielded_item()
|
||||||
|
if held:get_name() == "mcl_fire:flint_and_steel" then
|
||||||
|
if not minetest.settings:get_bool("creative_mode") then
|
||||||
|
held:add_wear(65535/65) -- 65 uses
|
||||||
|
local index = clicker:get_wield_index()
|
||||||
|
local inv = clicker:get_inventory()
|
||||||
|
inv:set_stack("main", index, held)
|
||||||
|
end
|
||||||
|
activate_tnt_minecart(self)
|
||||||
|
end
|
||||||
|
end, activate_tnt_minecart)
|
||||||
|
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
|
@ -631,8 +792,25 @@ minetest.register_craft({
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "mcl_minecarts:tnt_minecart",
|
||||||
|
recipe = {
|
||||||
|
{"mcl_tnt:tnt"},
|
||||||
|
{"mcl_minecarts:minecart"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
-- TODO: Re-enable crafting of special minecarts when they have been implemented
|
-- TODO: Re-enable crafting of special minecarts when they have been implemented
|
||||||
if false then
|
if false then
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "mcl_minecarts:furnace_minecart",
|
||||||
|
recipe = {
|
||||||
|
{"mcl_furnaces:furnace"},
|
||||||
|
{"mcl_minecarts:minecart"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "mcl_minecarts:hopper_minecart",
|
output = "mcl_minecarts:hopper_minecart",
|
||||||
recipe = {
|
recipe = {
|
||||||
|
@ -649,19 +827,4 @@ minetest.register_craft({
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = "mcl_minecarts:tnt_minecart",
|
|
||||||
recipe = {
|
|
||||||
{"mcl_tnt:tnt"},
|
|
||||||
{"mcl_minecarts:minecart"},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
|
||||||
output = "mcl_minecarts:furnace_minecart",
|
|
||||||
recipe = {
|
|
||||||
{"mcl_furnaces:furnace"},
|
|
||||||
{"mcl_minecarts:minecart"},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
# textdomain: mcl_minecarts
|
||||||
|
Minecart=Lore
|
||||||
|
Minecarts can be used for a quick transportion on rails.=Loren können für eine schnelle Fahrt auf Schienen benutzt werden.
|
||||||
|
Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type.=Loren fahren nur auf Schienen und bleiben immer auf der Strecke. An einer Einmündung ohne einem Weg nach vorne fahren sie nach links. Die Geschwindigkeit hängt vom Schienentyp ab.
|
||||||
|
You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.=Sie können die Lore auf Schienen platzieren. Rechtsklicken, um einzusteigen.
|
||||||
|
To obtain the minecart, punch it while holding down the sneak key.=Um die Lore aufzusammeln, schlagen Sie sie, während Sie die Schleichen-Taste gedrückt halten.
|
||||||
|
A minecart with TNT is an explosive vehicle that travels on rail.=Eine Lore mit TNT ist ein explosives Fahrzeug, das auf Schienen fährt.
|
||||||
|
Place it on rails. Punch it to move it. The TNT is ignited with a flint and steel or when the minecart is on an powered activator rail.=Auf Schienen platzieren. Zuschlagen zum Bewegen. Das TNT wird mit einem Feuerzeug angezündet, oder, wenn die Lore sich auf einer bestromten Aktivierungsschiene befindet.
|
||||||
|
To obtain the minecart and TNT, punch them while holding down the sneak key. You can't do this if the TNT was ignited.=Um die Lore und das TNT zu erhalten, schlagen Sie sie, während Sie die Schleichtaste drücken. Das ist nicht möglich, wenn das TNT bereits gezündet wurde.
|
||||||
|
A minecart with furnace is a vehicle that travels on rails. It can propel itself with fuel.=Eine Lore mit Ofen ist ein Fahrzeug, das auf Rädern fährt. Sie kann mit Brennstoff angetrieben werden.
|
||||||
|
Place it on rails. If you give it some coal, the furnace will start burning for a long time and the minecart will be able to move itself. Punch it to get it moving.=Auf Schienen platzieren. Wird Kohle eingefügt, wird der Ofen für eine lange Zeit brennen und die Lore wird fähig sein, sich selbst anzutreiben. Zuschlagen, um die Bewegung einzuläuten.
|
||||||
|
To obtain the minecart and furnace, punch them while holding down the sneak key.=Um die Lore und den Ofen zu erhalten, schlagen Sie zu, während Sie die Schleichtaste drücken.
|
||||||
|
Minecart with Chest=Lore mit Truhe
|
||||||
|
Minecart with Furnace=Lore mit Ofen
|
||||||
|
Minecart with Command Block=Lore mit Befehlsblock
|
||||||
|
Minecart with Hopper=Lore mit Trichter
|
||||||
|
Minecart with TNT=Lore mit TNT
|
||||||
|
Place them on the ground to build your railway, the rails will automatically connect to each other and will turn into curves, T-junctions, crossings and slopes as needed.=Bauen Sie sie auf den Boden, um Ihr Schienennetzwerk zu errichten, die Schienen werden sich automatisch verbinden und sich nach Bedarf in Kurven, Einmündungen, Kreuzungen und Steigungen verwandeln.
|
||||||
|
Rail=Schiene
|
||||||
|
Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.=Schienen können benutzt werden, um Strecken für Loren zu bauen. Normale Schienen werden Loren aufgrund von Reibung leicht verlangsamen.
|
||||||
|
Powered Rail=Antriebsschiene
|
||||||
|
Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.=Schienen können benutzt werden, um Strecken für Loren zu bauen. Antriebsschienen können Loren beschleunigen und abbremsen.
|
||||||
|
Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.=Ohne Redstone-Energie wird die Schiene Loren abbremsen. Mit Redstone-Energie wird sie sie beschleunigen.
|
||||||
|
Activator Rail=Aktivierungsschiene
|
||||||
|
Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.=Schienen können benutzt werden, um Strecken für Loren zu bauen. Aktivierungsschienen werden benutzt, um besondere Loren zu aktivieren.
|
||||||
|
To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.=Wenn diese Schiene mit Redstone-Energie versorgt wird, werden alle Loren, die sie passieren, aktiviert.
|
||||||
|
Detector Rail=Sensorschiene
|
||||||
|
Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms.=Schienen können benutzt werden, um Strecken für Loren zu bauen. Eine Sensorschiene kann eine Lore erkennen und versorgt Redstone-Mechanismen.
|
||||||
|
To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.=Um eine Lore zu erkennen und die Redstone-Energie zu aktivieren, verbinden Sie die Schiene mit Redstonestaub oder Redstone-Mechanismen und schicken Sie eine beliebige Lore über die Schiene.
|
||||||
|
Track for minecarts=Strecke für Loren
|
||||||
|
Speed up when powered, slow down when not powered=Beschleunigt, wenn bestromt, sonst verlangsamt es
|
||||||
|
Activates minecarts when powered=Aktiviert Loren, wenn bestromt
|
||||||
|
Emits redstone power when a minecart is detected=Gibt ein Redstonesignal aus, wenn eine Lore erfasst wird
|
||||||
|
Vehicle for fast travel on rails=Fahrzeug zum schnellen Transport auf Schienen
|
||||||
|
Can be ignited by tools or powered activator rail=Kann mit Werkzeugen oder bestromten Aktivierungsschienen angezündet werden
|
|
@ -0,0 +1,23 @@
|
||||||
|
# textdomain: mcl_minecarts
|
||||||
|
Minecart=Vagoneta
|
||||||
|
Minecarts can be used for a quick transportion on rails.=Las vagonetas se pueden usar para transportarse rápido en los rieles.
|
||||||
|
Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type.=Las vagonetas solo viajan en rieles y siempre siguen las pistas. En un cruce en T sin camino recto, giran a la izquierda. La velocidad se ve afectada por el tipo de riel.
|
||||||
|
You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.=Puedes colocar el vagoneta en los rieles. Haga clic derecho para insertarlo. Golpea para que se mueva.
|
||||||
|
To obtain the minecart, punch it while holding down the sneak key.=Para obtener el vagoneta, golpéalo mientras mantienes presionada la tecla.
|
||||||
|
Minecart with Chest=Vagoneta con cofre
|
||||||
|
Minecart with Furnace=Vagoneta con horno
|
||||||
|
Minecart with Command Block=Vagoneta con bloque de comandos
|
||||||
|
Minecart with Hopper=Vagoneta con tolva
|
||||||
|
Minecart with TNT=Vagoneta con dinamita
|
||||||
|
Place them on the ground to build your railway, the rails will automatically connect to each other and will turn into curves, T-junctions, crossings and slopes as needed.=Colóquelos en el suelo para construir su ferrocarril, los rieles se conectarán automáticamente entre sí y se convertirán en curvas, uniones en T, cruces y pendientes según sea necesario.
|
||||||
|
Rail=Raíl
|
||||||
|
Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.=Los rieles se pueden usar para construir vías de transporte para vagonetas. Los rieles normales ralentizan ligeramente las vagonetas debido a la fricción.
|
||||||
|
Powered Rail=Raíl propulsor
|
||||||
|
Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.=Los rieles se pueden usar para construir vías de transporte para vagonetas. Los railes propulsores pueden acelerar y frenar las vagonetas.
|
||||||
|
Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.=Sin energía de redstone, el riel frenará las vagonetas. Para hacer que este riel acelere las vagonetas, aliméntalo con redstone.
|
||||||
|
Activator Rail=Raíl activador
|
||||||
|
Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.=Los rieles se pueden usar para construir vías de transporte para vagonetas. Los railes activador se utilizan para activar una vagoneta especial.
|
||||||
|
To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.=Para hacer que este riel active las vagonetas, enciéndelo con energía de redstone y envía una vagoneta sobre este pedazo de riel.
|
||||||
|
Detector Rail=Raíl detector
|
||||||
|
Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms.=Los rieles se pueden usar para construir vías de transporte para vagonetas. Un raíl detector puede detectar una vagoneta sobre él y alimenta los mecanismos de redstone.
|
||||||
|
To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.=Para detectar una vagoneta y proporcionar energía de redstone, conéctelo a los senderos de redstone o mecanismos de redstone y envíe cualquier vagoneta sobre el riel.
|
|
@ -0,0 +1,35 @@
|
||||||
|
# textdomain: mcl_minecarts
|
||||||
|
Minecart=
|
||||||
|
Minecarts can be used for a quick transportion on rails.=
|
||||||
|
Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type.=
|
||||||
|
You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.=
|
||||||
|
To obtain the minecart, punch it while holding down the sneak key.=
|
||||||
|
A minecart with TNT is an explosive vehicle that travels on rail.=
|
||||||
|
Place it on rails. Punch it to move it. The TNT is ignited with a flint and steel or when the minecart is on an powered activator rail.=
|
||||||
|
To obtain the minecart and TNT, punch them while holding down the sneak key. You can't do this if the TNT was ignited.=
|
||||||
|
A minecart with furnace is a vehicle that travels on rails. It can propel itself with fuel.=
|
||||||
|
Place it on rails. If you give it some coal, the furnace will start burning for a long time and the minecart will be able to move itself. Punch it to get it moving.=
|
||||||
|
To obtain the minecart and furnace, punch them while holding down the sneak key.=
|
||||||
|
Minecart with Chest=
|
||||||
|
Minecart with Furnace=
|
||||||
|
Minecart with Command Block=
|
||||||
|
Minecart with Hopper=
|
||||||
|
Minecart with TNT=
|
||||||
|
Place them on the ground to build your railway, the rails will automatically connect to each other and will turn into curves, T-junctions, crossings and slopes as needed.=
|
||||||
|
Rail=
|
||||||
|
Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.=
|
||||||
|
Powered Rail=
|
||||||
|
Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.=
|
||||||
|
Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.=
|
||||||
|
Activator Rail=
|
||||||
|
Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.=
|
||||||
|
To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.=
|
||||||
|
Detector Rail=
|
||||||
|
Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms.=
|
||||||
|
To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.=
|
||||||
|
Track for minecarts=
|
||||||
|
Speed up when powered, slow down when not powered=
|
||||||
|
Activates minecarts when powered=
|
||||||
|
Emits redstone power when a minecart is detected=
|
||||||
|
Vehicle for fast travel on rails=
|
||||||
|
Can be ignited by tools or powered activator rail=
|
|
@ -1,6 +1,8 @@
|
||||||
|
local S = minetest.get_translator("mcl_minecarts")
|
||||||
|
|
||||||
-- Template rail function
|
-- Template rail function
|
||||||
local register_rail = function(itemstring, tiles, def_extras, creative)
|
local register_rail = function(itemstring, tiles, def_extras, creative)
|
||||||
local groups = {handy=1,pickaxey=1, attached_node=1,rail=1,connect_to_raillike=1,dig_by_water=1,destroy_by_lava_flow=1, transport=1}
|
local groups = {handy=1,pickaxey=1, attached_node=1,rail=1,connect_to_raillike=minetest.raillike_group("rail"),dig_by_water=1,destroy_by_lava_flow=1, transport=1}
|
||||||
if creative == false then
|
if creative == false then
|
||||||
groups.not_in_creative_inventory = 1
|
groups.not_in_creative_inventory = 1
|
||||||
end
|
end
|
||||||
|
@ -64,14 +66,15 @@ local rail_rules_long =
|
||||||
|
|
||||||
local rail_rules_short = mesecon.rules.pplate
|
local rail_rules_short = mesecon.rules.pplate
|
||||||
|
|
||||||
local railuse = "Place them on the ground to build your railway, the rails will automatically connect to each other and will turn into curves, T-junctions, crossings and slopes as needed."
|
local railuse = S("Place them on the ground to build your railway, the rails will automatically connect to each other and will turn into curves, T-junctions, crossings and slopes as needed.")
|
||||||
|
|
||||||
-- Normal rail
|
-- Normal rail
|
||||||
register_rail("mcl_minecarts:rail",
|
register_rail("mcl_minecarts:rail",
|
||||||
{"default_rail.png", "default_rail_curved.png", "default_rail_t_junction.png", "default_rail_crossing.png"},
|
{"default_rail.png", "default_rail_curved.png", "default_rail_t_junction.png", "default_rail_crossing.png"},
|
||||||
{
|
{
|
||||||
description = "Rail",
|
description = S("Rail"),
|
||||||
_doc_items_longdesc = "Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.",
|
_tt_help = S("Track for minecarts"),
|
||||||
|
_doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction."),
|
||||||
_doc_items_usagehelp = railuse,
|
_doc_items_usagehelp = railuse,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -80,9 +83,10 @@ register_rail("mcl_minecarts:rail",
|
||||||
register_rail("mcl_minecarts:golden_rail",
|
register_rail("mcl_minecarts:golden_rail",
|
||||||
{"mcl_minecarts_rail_golden.png", "mcl_minecarts_rail_golden_curved.png", "mcl_minecarts_rail_golden_t_junction.png", "mcl_minecarts_rail_golden_crossing.png"},
|
{"mcl_minecarts_rail_golden.png", "mcl_minecarts_rail_golden_curved.png", "mcl_minecarts_rail_golden_t_junction.png", "mcl_minecarts_rail_golden_crossing.png"},
|
||||||
{
|
{
|
||||||
description = "Powered Rail",
|
description = S("Powered Rail"),
|
||||||
_doc_items_longdesc = "Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.",
|
_tt_help = S("Track for minecarts").."\n"..S("Speed up when powered, slow down when not powered"),
|
||||||
_doc_items_usagehelp = railuse .. "\n" .. "Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.",
|
_doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts."),
|
||||||
|
_doc_items_usagehelp = railuse .. "\n" .. S("Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power."),
|
||||||
_rail_acceleration = -3,
|
_rail_acceleration = -3,
|
||||||
mesecons = {
|
mesecons = {
|
||||||
conductor = {
|
conductor = {
|
||||||
|
@ -118,21 +122,20 @@ register_rail("mcl_minecarts:golden_rail_on",
|
||||||
register_rail("mcl_minecarts:activator_rail",
|
register_rail("mcl_minecarts:activator_rail",
|
||||||
{"mcl_minecarts_rail_activator.png", "mcl_minecarts_rail_activator_curved.png", "mcl_minecarts_rail_activator_t_junction.png", "mcl_minecarts_rail_activator_crossing.png"},
|
{"mcl_minecarts_rail_activator.png", "mcl_minecarts_rail_activator_curved.png", "mcl_minecarts_rail_activator_t_junction.png", "mcl_minecarts_rail_activator_crossing.png"},
|
||||||
{
|
{
|
||||||
description = "Activator Rail",
|
description = S("Activator Rail"),
|
||||||
_doc_items_longdesc = "Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.",
|
_tt_help = S("Track for minecarts").."\n"..S("Activates minecarts when powered"),
|
||||||
_doc_items_usagehelp = railuse .. "\n" .. "To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.",
|
_doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts."),
|
||||||
|
_doc_items_usagehelp = railuse .. "\n" .. S("To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail."),
|
||||||
mesecons = {
|
mesecons = {
|
||||||
conductor = {
|
conductor = {
|
||||||
state = mesecon.state.off,
|
state = mesecon.state.off,
|
||||||
offstate = "mcl_minecarts:activator_rail",
|
offstate = "mcl_minecarts:activator_rail",
|
||||||
onstate = "mcl_minecarts:activator_rail_on",
|
onstate = "mcl_minecarts:activator_rail_on",
|
||||||
rules = rail_rules_long,
|
rules = rail_rules_long,
|
||||||
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
}
|
||||||
-- Hidden from creative because no cart is using this rail so far.
|
|
||||||
-- TODO: Remove this when the activator rail has become useful.
|
|
||||||
false
|
|
||||||
)
|
)
|
||||||
|
|
||||||
-- Activator rail (on)
|
-- Activator rail (on)
|
||||||
|
@ -147,6 +150,20 @@ register_rail("mcl_minecarts:activator_rail_on",
|
||||||
onstate = "mcl_minecarts:activator_rail_on",
|
onstate = "mcl_minecarts:activator_rail_on",
|
||||||
rules = rail_rules_long,
|
rules = rail_rules_long,
|
||||||
},
|
},
|
||||||
|
effector = {
|
||||||
|
-- Activate minecarts
|
||||||
|
action_on = function(pos, node)
|
||||||
|
local pos2 = { x = pos.x, y =pos.y + 1, z = pos.z }
|
||||||
|
local objs = minetest.get_objects_inside_radius(pos2, 1)
|
||||||
|
for _, o in pairs(objs) do
|
||||||
|
local l = o:get_luaentity()
|
||||||
|
if l and string.sub(l.name, 1, 14) == "mcl_minecarts:" and l.on_activate_by_rail then
|
||||||
|
l:on_activate_by_rail()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
drop = "mcl_minecarts:activator_rail",
|
drop = "mcl_minecarts:activator_rail",
|
||||||
},
|
},
|
||||||
|
@ -157,9 +174,10 @@ register_rail("mcl_minecarts:activator_rail_on",
|
||||||
register_rail("mcl_minecarts:detector_rail",
|
register_rail("mcl_minecarts:detector_rail",
|
||||||
{"mcl_minecarts_rail_detector.png", "mcl_minecarts_rail_detector_curved.png", "mcl_minecarts_rail_detector_t_junction.png", "mcl_minecarts_rail_detector_crossing.png"},
|
{"mcl_minecarts_rail_detector.png", "mcl_minecarts_rail_detector_curved.png", "mcl_minecarts_rail_detector_t_junction.png", "mcl_minecarts_rail_detector_crossing.png"},
|
||||||
{
|
{
|
||||||
description = "Detector Rail",
|
description = S("Detector Rail"),
|
||||||
_doc_items_longdesc = "Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms.",
|
_tt_help = S("Track for minecarts").."\n"..S("Emits redstone power when a minecart is detected"),
|
||||||
_doc_items_usagehelp = railuse .. "\n" .. "To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.",
|
_doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms."),
|
||||||
|
_doc_items_usagehelp = railuse .. "\n" .. S("To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail."),
|
||||||
mesecons = {
|
mesecons = {
|
||||||
receptor = {
|
receptor = {
|
||||||
state = mesecon.state.off,
|
state = mesecon.state.off,
|
||||||
|
@ -205,9 +223,6 @@ minetest.register_craft({
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Activator rail crafting is disabled until it becomes useful.
|
|
||||||
-- TODO: Enable crafting as needed.
|
|
||||||
if false then
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "mcl_minecarts:activator_rail 6",
|
output = "mcl_minecarts:activator_rail 6",
|
||||||
recipe = {
|
recipe = {
|
||||||
|
@ -216,7 +231,6 @@ minetest.register_craft({
|
||||||
{"mcl_core:iron_ingot", "mcl_core:stick", "mcl_core:iron_ingot"},
|
{"mcl_core:iron_ingot", "mcl_core:stick", "mcl_core:iron_ingot"},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
end
|
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "mcl_minecarts:detector_rail 6",
|
output = "mcl_minecarts:detector_rail 6",
|
||||||
|
|
Before Width: | Height: | Size: 249 B After Width: | Height: | Size: 257 B |
|
@ -28,10 +28,19 @@ functions needed for the mob to work properly which contains the following:
|
||||||
"monster" attacks player or npc on sight.
|
"monster" attacks player or npc on sight.
|
||||||
"npc" walk around and will defend themselves if hit first, they
|
"npc" walk around and will defend themselves if hit first, they
|
||||||
kill monsters.
|
kill monsters.
|
||||||
'hp_min' has the minimum health value the mob can spawn with.
|
'hp_min' the minimum health value the mob can spawn with.
|
||||||
'hp_max' has the maximum health value the mob can spawn with.
|
'hp_max' the maximum health value the mob can spawn with.
|
||||||
'armor' holds strength of mob, 100 is normal, lower is more powerful
|
'breath_max' The maximum breath value the mob can spawn with and can have.
|
||||||
and needs more hits and better weapons to kill.
|
If -1 (default), mob does not take drowning damage.
|
||||||
|
'breathes_in_water' If true, mob loses breath when not in water. Otherwise,
|
||||||
|
mob loses breath when inside a node with `drowning` attribute
|
||||||
|
set (default: false).
|
||||||
|
'armor' entity armor groups (see lua_api.txt). If table, a list of
|
||||||
|
armor groups like for entities. If number, set value of
|
||||||
|
'fleshy' armor group only.
|
||||||
|
Note: The 'immortal=1' armor group will automatically be added
|
||||||
|
since this mod handles health and damage manually.
|
||||||
|
Default: 100 (mob will take full dmg from 'fleshy' hits)
|
||||||
'passive' when true allows animals to defend themselves when hit,
|
'passive' when true allows animals to defend themselves when hit,
|
||||||
otherwise they amble onwards.
|
otherwise they amble onwards.
|
||||||
'walk_velocity' is the speed that your mob can walk around.
|
'walk_velocity' is the speed that your mob can walk around.
|
||||||
|
@ -43,8 +52,10 @@ functions needed for the mob to work properly which contains the following:
|
||||||
'stepheight' height of a block that your mob can easily walk up onto,
|
'stepheight' height of a block that your mob can easily walk up onto,
|
||||||
defaults to 1.1.
|
defaults to 1.1.
|
||||||
'fly' when true allows your mob to fly around instead of walking.
|
'fly' when true allows your mob to fly around instead of walking.
|
||||||
'fly_in' holds the node name that the mob flies (or swims) around
|
'fly_in' holds the node name or a table of node names in which the
|
||||||
in e.g. "air" or "default:water_source".
|
mob flies (or swims) around in. The special name
|
||||||
|
'__airlike' stands for all nodes with 'walkable=false'
|
||||||
|
that are not liquids
|
||||||
'runaway' if true causes animals to turn and run away when hit.
|
'runaway' if true causes animals to turn and run away when hit.
|
||||||
'view_range' how many nodes in distance the mob can see a player.
|
'view_range' how many nodes in distance the mob can see a player.
|
||||||
'damage' how many health points the mob does to a player or another
|
'damage' how many health points the mob does to a player or another
|
||||||
|
@ -56,9 +67,11 @@ functions needed for the mob to work properly which contains the following:
|
||||||
'fall_speed' has the maximum speed the mob can fall at, default is -10.
|
'fall_speed' has the maximum speed the mob can fall at, default is -10.
|
||||||
'fall_damage' when true causes falling to inflict damage.
|
'fall_damage' when true causes falling to inflict damage.
|
||||||
'water_damage' holds the damage per second infliced to mobs when standing in
|
'water_damage' holds the damage per second infliced to mobs when standing in
|
||||||
water.
|
water (default: 0).
|
||||||
'lava_damage' holds the damage per second inflicted to mobs when standing
|
'lava_damage' holds the damage per second inflicted to mobs when standing
|
||||||
in lava or fire.
|
in lava (default: 8).
|
||||||
|
'fire_damage' holds the damage per second inflicted to mobs when standing
|
||||||
|
in fire (default: 1).
|
||||||
'light_damage' holds the damage per second inflicted to mobs when it's too
|
'light_damage' holds the damage per second inflicted to mobs when it's too
|
||||||
bright (above 13 light).
|
bright (above 13 light).
|
||||||
'suffocation' when true causes mobs to suffocate inside solid blocks (2 damage per second).
|
'suffocation' when true causes mobs to suffocate inside solid blocks (2 damage per second).
|
||||||
|
@ -78,6 +91,8 @@ functions needed for the mob to work properly which contains the following:
|
||||||
punches when nearby.
|
punches when nearby.
|
||||||
'group_attack' when true has same mob type grouping together to attack
|
'group_attack' when true has same mob type grouping together to attack
|
||||||
offender.
|
offender.
|
||||||
|
[MCL2 extension:] When a table, this is a list of
|
||||||
|
mob types that will get alerted as well (besides same mob type)
|
||||||
'attack_type' tells the api what a mob does when attacking the player
|
'attack_type' tells the api what a mob does when attacking the player
|
||||||
or another mob:
|
or another mob:
|
||||||
'dogfight' is a melee attack when player is within mob reach.
|
'dogfight' is a melee attack when player is within mob reach.
|
||||||
|
@ -114,10 +129,6 @@ functions needed for the mob to work properly which contains the following:
|
||||||
e.g. {"player", "mobs_animal:chicken"}.
|
e.g. {"player", "mobs_animal:chicken"}.
|
||||||
'runaway_from' contains a table with mob names to run away from, add
|
'runaway_from' contains a table with mob names to run away from, add
|
||||||
"player" to list to runaway from player also.
|
"player" to list to runaway from player also.
|
||||||
'blood_amount' contains the number of blood droplets to appear when
|
|
||||||
mob is hit.
|
|
||||||
'blood_texture' has the texture name to use for droplets e.g.
|
|
||||||
"mobs_blood.png", or table {"blood1.png", "blood2.png"}
|
|
||||||
'pathfinding' set to 1 for mobs to use pathfinder feature to locate
|
'pathfinding' set to 1 for mobs to use pathfinder feature to locate
|
||||||
player, set to 2 so they can build/break also (only
|
player, set to 2 so they can build/break also (only
|
||||||
works with dogfight attack and when 'mobs_griefing'
|
works with dogfight attack and when 'mobs_griefing'
|
||||||
|
@ -131,6 +142,7 @@ functions needed for the mob to work properly which contains the following:
|
||||||
'makes_footstep_sound' when true you can hear mobs walking.
|
'makes_footstep_sound' when true you can hear mobs walking.
|
||||||
'sounds' this is a table with sounds of the mob
|
'sounds' this is a table with sounds of the mob
|
||||||
'distance' maximum distance sounds can be heard, default is 10.
|
'distance' maximum distance sounds can be heard, default is 10.
|
||||||
|
'base_pitch' base pitch to use adult mobs, default is 1.0 (MCL2 extension)
|
||||||
'random' played randomly from time to time.
|
'random' played randomly from time to time.
|
||||||
also played for overfeeding animal.
|
also played for overfeeding animal.
|
||||||
'war_cry' what you hear when mob starts to attack player. (currently disabled)
|
'war_cry' what you hear when mob starts to attack player. (currently disabled)
|
||||||
|
@ -142,6 +154,9 @@ functions needed for the mob to work properly which contains the following:
|
||||||
'fuse' sound played when mob explode timer starts.
|
'fuse' sound played when mob explode timer starts.
|
||||||
'explode' sound played when mob explodes.
|
'explode' sound played when mob explodes.
|
||||||
|
|
||||||
|
Note: For all sounds except fuse and explode, the pitch is slightly randomized from the base pitch
|
||||||
|
The pitch of children is 50% higher.
|
||||||
|
|
||||||
'drops' table of items that are dropped when mob is killed, fields are:
|
'drops' table of items that are dropped when mob is killed, fields are:
|
||||||
'name' name of item to drop.
|
'name' name of item to drop.
|
||||||
'chance' chance of drop, 1 for always, 2 for 1-in-2 chance etc.
|
'chance' chance of drop, 1 for always, 2 for 1-in-2 chance etc.
|
||||||
|
@ -156,7 +171,9 @@ functions needed for the mob to work properly which contains the following:
|
||||||
'mesh' uses separate object file to define mob.
|
'mesh' uses separate object file to define mob.
|
||||||
'visual_size' has the size of the mob, defaults to {x = 1, y = 1}
|
'visual_size' has the size of the mob, defaults to {x = 1, y = 1}
|
||||||
'collisionbox' has the box in which mob can be interacted with the
|
'collisionbox' has the box in which mob can be interacted with the
|
||||||
world e.g. {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}
|
world e.g. {-0.5, -0.5, -0.5, 0.5, 0.8, 0.5}.
|
||||||
|
NOTE: Due to a workaround, the upper Y coordinate will be forced
|
||||||
|
to a minimum value of 0.79.
|
||||||
'selectionbox' has the box in which player can interact with mob
|
'selectionbox' has the box in which player can interact with mob
|
||||||
'textures' holds a table list of textures to be used for mob, or you
|
'textures' holds a table list of textures to be used for mob, or you
|
||||||
could use multiple lists inside another table for random
|
could use multiple lists inside another table for random
|
||||||
|
@ -215,6 +232,14 @@ functions needed for the mob to work properly which contains the following:
|
||||||
are in direct sunlight
|
are in direct sunlight
|
||||||
'spawn_small_alternative': name of a smaller mob to use as replacement if
|
'spawn_small_alternative': name of a smaller mob to use as replacement if
|
||||||
spawning fails due to space requirements
|
spawning fails due to space requirements
|
||||||
|
'glow' same as in entity definition
|
||||||
|
'child' if true, spawn mob as child
|
||||||
|
'shoot_arrow(self, pos, dir)' function that is called when mob wants to shoot an arrow.
|
||||||
|
You can spawn your own arrow here. pos is mob position,
|
||||||
|
dir is mob's aiming direction
|
||||||
|
'sounds_child' same as sounds, but for childs. If not defined, childs will use same
|
||||||
|
sound as adults but with higher pitch
|
||||||
|
|
||||||
|
|
||||||
Node Replacement
|
Node Replacement
|
||||||
----------------
|
----------------
|
||||||
|
@ -234,8 +259,9 @@ eating.
|
||||||
'replace_rate' how random should the replace rate be (typically 10)
|
'replace_rate' how random should the replace rate be (typically 10)
|
||||||
'replace_offset' +/- value to check specific node to replace
|
'replace_offset' +/- value to check specific node to replace
|
||||||
|
|
||||||
'on_replace(self, pos, oldnode, newnode)' is called when mob is about to
|
'on_replace(self, pos, oldnode, newnode)'
|
||||||
replace a node.
|
is called when mob is about to replace a node. Also called
|
||||||
|
when not actually replacing due to mobs_griefing setting being false.
|
||||||
'self' ObjectRef of mob
|
'self' ObjectRef of mob
|
||||||
'pos' Position of node to replace
|
'pos' Position of node to replace
|
||||||
'oldnode' Current node
|
'oldnode' Current node
|
||||||
|
@ -289,12 +315,18 @@ for each mob.
|
||||||
|
|
||||||
'self.health' contains current health of mob (cannot exceed
|
'self.health' contains current health of mob (cannot exceed
|
||||||
self.hp_max)
|
self.hp_max)
|
||||||
|
'self.breath' contains current breath of mob, if mob takes drowning
|
||||||
|
damage at all (cannot exceed self.breath_max). Breath
|
||||||
|
decreases by 1 each second while in a node with drowning
|
||||||
|
damage and increases by 1 each second otherwise.
|
||||||
'self.texture_list' contains list of all mob textures
|
'self.texture_list' contains list of all mob textures
|
||||||
'self.child_texture' contains mob child texture when growing up
|
'self.child_texture' contains mob child texture when growing up
|
||||||
'self.base_texture' contains current skin texture which was randomly
|
'self.base_texture' contains current skin texture which was randomly
|
||||||
selected from textures list
|
selected from textures list
|
||||||
'self.gotten' this is used for obtaining milk from cow and wool from
|
'self.gotten' this is used to track whether some special item has been
|
||||||
sheep
|
gotten from the mob, for example, wool from sheep.
|
||||||
|
Initialized as false, and the mob must set this value
|
||||||
|
manually.
|
||||||
'self.horny' when animal fed enough it is set to true and animal can
|
'self.horny' when animal fed enough it is set to true and animal can
|
||||||
breed with same animal
|
breed with same animal
|
||||||
'self.hornytimer' background timer that controls breeding functions and
|
'self.hornytimer' background timer that controls breeding functions and
|
||||||
|
@ -396,6 +428,9 @@ This function registers a arrow for mobs with the attack type shoot.
|
||||||
'hit_mob' a function that is called when the arrow hits a mob;
|
'hit_mob' a function that is called when the arrow hits a mob;
|
||||||
this function should hurt the mob, the parameters are
|
this function should hurt the mob, the parameters are
|
||||||
(self, mob)
|
(self, mob)
|
||||||
|
'hit_object' a function that is called when the arrow hits an object
|
||||||
|
that is neither a player nor a mob. this function should
|
||||||
|
hurt the object, the parameters are (self, object)
|
||||||
'hit_node' a function that is called when the arrow hits a node, the
|
'hit_node' a function that is called when the arrow hits a node, the
|
||||||
parameters are (self, pos, node)
|
parameters are (self, pos, node)
|
||||||
'tail' when set to 1 adds a trail or tail to mob arrows
|
'tail' when set to 1 adds a trail or tail to mob arrows
|
||||||
|
@ -429,8 +464,6 @@ This function registers a spawn egg which can be used by admin to properly spawn
|
||||||
Explosion Function
|
Explosion Function
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
mobs:explosion(pos, radius) -- DEPRECATED!!! use mobs:boom() instead
|
|
||||||
|
|
||||||
mobs:boom(self, pos, radius)
|
mobs:boom(self, pos, radius)
|
||||||
'self' mob entity
|
'self' mob entity
|
||||||
'pos' centre position of explosion
|
'pos' centre position of explosion
|
||||||
|
@ -573,19 +606,13 @@ External Settings for "minetest.conf"
|
||||||
'enable_damage' if true monsters will attack players (default is true)
|
'enable_damage' if true monsters will attack players (default is true)
|
||||||
'only_peaceful_mobs' if true only animals will spawn in game (default is
|
'only_peaceful_mobs' if true only animals will spawn in game (default is
|
||||||
false)
|
false)
|
||||||
'mobs_disable_blood' if false blood effects appear when mob is hit (default
|
'mobs_disable_blood' if false, damage effects appear when mob is hit (default
|
||||||
is false)
|
is false)
|
||||||
'mobs_spawn_protected' if set to false then mobs will not spawn in protected
|
'mobs_spawn_protected' if set to false then mobs will not spawn in protected
|
||||||
areas (default is true)
|
areas (default is true)
|
||||||
'remove_far_mobs' if true then untamed mobs that are outside players
|
|
||||||
visual range will be removed (default is true)
|
|
||||||
'mobname' can change specific mob chance rate (0 to disable) and
|
|
||||||
spawn number e.g. mobs_animal:cow = 1000,5
|
|
||||||
'mob_difficulty' sets difficulty level (health and hit damage
|
'mob_difficulty' sets difficulty level (health and hit damage
|
||||||
multiplied by this number), defaults to 1.0.
|
multiplied by this number), defaults to 1.0.
|
||||||
'mob_show_health' if false then punching mob will not show health status
|
'mob_spawn_chance' multiplies chance of all mobs spawning and can be set
|
||||||
(true by default)
|
|
||||||
'mob_chance_multiplier' multiplies chance of all mobs spawning and can be set
|
|
||||||
to 0.5 to have mobs spawn more or 2.0 to spawn less.
|
to 0.5 to have mobs spawn more or 2.0 to spawn less.
|
||||||
e.g. 1 in 7000 * 0.5 = 1 in 3500 so better odds of
|
e.g. 1 in 7000 * 0.5 = 1 in 3500 so better odds of
|
||||||
spawning.
|
spawning.
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
|
|
||||||
local S = mobs.intllib
|
local S = minetest.get_translator("mcl_mobs")
|
||||||
|
|
||||||
-- name tag
|
-- name tag
|
||||||
minetest.register_craftitem("mcl_mobs:nametag", {
|
minetest.register_craftitem("mcl_mobs:nametag", {
|
||||||
description = S("Name Tag"),
|
description = S("Name Tag"),
|
||||||
|
_tt_help = S("Give names to mobs").."\n"..S("Set name at anvil"),
|
||||||
_doc_items_longdesc = S("A name tag is an item to name a mob."),
|
_doc_items_longdesc = S("A name tag is an item to name a mob."),
|
||||||
_doc_items_usagehelp = S("Before you use the name tag, you need to set a name at an anvil. Now you can use the name tag to name a mob with a rightclick. This uses up the name tag."),
|
_doc_items_usagehelp = S("Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag."),
|
||||||
inventory_image = "mobs_nametag.png",
|
inventory_image = "mobs_nametag.png",
|
||||||
wield_image = "mobs_nametag.png",
|
wield_image = "mobs_nametag.png",
|
||||||
stack_max = 64,
|
stack_max = 64,
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
mcl_core
|
|
||||||
mcl_weather?
|
|
||||||
mcl_tnt?
|
|
||||||
mcl_hunger?
|
|
||||||
invisibility?
|
|
||||||
intllib?
|
|
||||||
lucky_block?
|
|
||||||
cmi?
|
|
||||||
doc_identifier?
|
|
|
@ -1,45 +0,0 @@
|
||||||
|
|
||||||
-- Fallback functions for when `intllib` is not installed.
|
|
||||||
-- Code released under Unlicense <http://unlicense.org>.
|
|
||||||
|
|
||||||
-- Get the latest version of this file at:
|
|
||||||
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
|
|
||||||
|
|
||||||
local function format(str, ...)
|
|
||||||
local args = { ... }
|
|
||||||
local function repl(escape, open, num, close)
|
|
||||||
if escape == "" then
|
|
||||||
local replacement = tostring(args[tonumber(num)])
|
|
||||||
if open == "" then
|
|
||||||
replacement = replacement..close
|
|
||||||
end
|
|
||||||
return replacement
|
|
||||||
else
|
|
||||||
return "@"..open..num..close
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
|
|
||||||
end
|
|
||||||
|
|
||||||
local gettext, ngettext
|
|
||||||
if minetest.get_modpath("intllib") then
|
|
||||||
if intllib.make_gettext_pair then
|
|
||||||
-- New method using gettext.
|
|
||||||
gettext, ngettext = intllib.make_gettext_pair()
|
|
||||||
else
|
|
||||||
-- Old method using text files.
|
|
||||||
gettext = intllib.Getter()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Fill in missing functions.
|
|
||||||
|
|
||||||
gettext = gettext or function(msgid, ...)
|
|
||||||
return format(msgid, ...)
|
|
||||||
end
|
|
||||||
|
|
||||||
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
|
|
||||||
return format(n==1 and msgid or msgid_plural, ...)
|
|
||||||
end
|
|
||||||
|
|
||||||
return gettext, ngettext
|
|
|
@ -1,131 +0,0 @@
|
||||||
# Mobs Redo translation.
|
|
||||||
# Copyright (C) 2017 TenPlus1
|
|
||||||
# This file is distributed under the same license as the mobs package.
|
|
||||||
# Wuzzy <Wuzzy@mail.ru>, 2017
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: mobs\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2017-07-02 16:48+0200\n"
|
|
||||||
"PO-Revision-Date: 2017-07-02 14:27+0200\n"
|
|
||||||
"Last-Translator: Wuzzy <almikes@aol.com>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"Language: de_DE\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"X-Generator: Poedit 2.0.2\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Mob has been protected!"
|
|
||||||
msgstr "Kreatur wurde geschützt!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 (Tamed)"
|
|
||||||
msgstr "@1 (Gezähmt)"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Not tamed!"
|
|
||||||
msgstr "Nicht gezähmt!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 is owner!"
|
|
||||||
msgstr "@1 ist der Besitzer!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Missed!"
|
|
||||||
msgstr "Daneben!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Already protected!"
|
|
||||||
msgstr "Bereits geschützt!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 at full health (@2)"
|
|
||||||
msgstr "@1 bei voller Gesundheit (@2)"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 has been tamed!"
|
|
||||||
msgstr "@1 wurde gezähmt!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Enter name:"
|
|
||||||
msgstr "Namen eingeben:"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Rename"
|
|
||||||
msgstr "Umbenennen"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Name Tag"
|
|
||||||
msgstr "Namensschild"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Leather"
|
|
||||||
msgstr "Leder"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Raw Meat"
|
|
||||||
msgstr "Rohes Fleisch"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Meat"
|
|
||||||
msgstr "Fleisch"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Lasso (right-click animal to put in inventory)"
|
|
||||||
msgstr "Lasso (Rechtsklick auf Tier, um es zu nehmen)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Net (right-click animal to put in inventory)"
|
|
||||||
msgstr "Netz (Rechtsklick auf Tier, um es zu nehmen)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Steel Shears (right-click to shear)"
|
|
||||||
msgstr "Stahlschere (Rechtsklick zum Scheren)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Protection Rune"
|
|
||||||
msgstr "Kreaturschutzrune"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Saddle"
|
|
||||||
msgstr "Sattel"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Fence"
|
|
||||||
msgstr "Kreaturen Zaun"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner"
|
|
||||||
msgstr "Kreaturenspawner"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob MinLight MaxLight Amount PlayerDist"
|
|
||||||
msgstr "Kreatur MinLicht MaxLicht Menge SpielerEntfng"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Not Active (enter settings)"
|
|
||||||
msgstr "Nicht aktiv (Einstellungen eingeben)"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Active (@1)"
|
|
||||||
msgstr "Spawner aktiv (@1)"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner settings failed!"
|
|
||||||
msgstr "Kreaturenspawner-Einstellungen gescheitert!"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid ""
|
|
||||||
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
|
|
||||||
"distance[1-20] y_offset[-10 to 10]”"
|
|
||||||
msgstr ""
|
|
||||||
"Syntax: „name min_licht[0-14] max_licht[0-14] max_mobs_im_gebiet[0 zum "
|
|
||||||
"Deaktivieren] distanz[1-20] y_versatz[-10 bis 10]“"
|
|
|
@ -1,128 +0,0 @@
|
||||||
# Mobs Redo translation.
|
|
||||||
# Copyright (C) 2017 TenPlus1
|
|
||||||
# This file is distributed under the same license as the mobs package.
|
|
||||||
# Wuzzy <Wuzzy@mail.ru>, 2017
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2017-07-16 16:48+0200\n"
|
|
||||||
"PO-Revision-Date: 2017-07-16 16:48+0200\n"
|
|
||||||
"Last-Translator: Aleks <alexsinteck@icqmail.com>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"Language: es\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Mob has been protected!"
|
|
||||||
msgstr "El mob ha sido protegido!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 (Tamed)"
|
|
||||||
msgstr "@1 (Domesticado)"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Not tamed!"
|
|
||||||
msgstr "No domesticado!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 is owner!"
|
|
||||||
msgstr "@1 es el dueño!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Missed!"
|
|
||||||
msgstr "Perdido!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Already protected!"
|
|
||||||
msgstr "Ya está protegido!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 at full health (@2)"
|
|
||||||
msgstr "@1 con salud llena (@2)"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 has been tamed!"
|
|
||||||
msgstr "@1 ha sido domesticado!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Enter name:"
|
|
||||||
msgstr "Ingrese nombre:"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Rename"
|
|
||||||
msgstr "Renombrar"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Name Tag"
|
|
||||||
msgstr "Nombrar etiqueta"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Leather"
|
|
||||||
msgstr "Cuero"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Raw Meat"
|
|
||||||
msgstr "Carne cruda"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Meat"
|
|
||||||
msgstr "Carne"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Lasso (right-click animal to put in inventory)"
|
|
||||||
msgstr "Lazo (click derecho en animal para colocar en inventario)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Net (right-click animal to put in inventory)"
|
|
||||||
msgstr "Red (click derecho en animal para colocar en inventario)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Steel Shears (right-click to shear)"
|
|
||||||
msgstr "Tijera de acero (click derecho para esquilar)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Protection Rune"
|
|
||||||
msgstr "Runa de protección de Mob"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Saddle"
|
|
||||||
msgstr "Montura"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Fence"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner"
|
|
||||||
msgstr "Generador de Mob"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob MinLight MaxLight Amount PlayerDist"
|
|
||||||
msgstr "Mob LuzMin LuzMax Cantidad DistJugador"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Not Active (enter settings)"
|
|
||||||
msgstr "Generador no activo (ingrese config)"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Active (@1)"
|
|
||||||
msgstr "Generador activo (@1)"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner settings failed!"
|
|
||||||
msgstr "Configuracion de generador de Mob falló!"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid ""
|
|
||||||
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
|
|
||||||
"distance[1-20] y_offset[-10 to 10]”"
|
|
||||||
msgstr "Sintaxis: “nombre luz_min[0-14] luz_max[0-14] max_mobs_en_area[0 para deshabilitar] "
|
|
||||||
"distancia[1-20] compensacion[-10 a 10]”"
|
|
|
@ -1,129 +0,0 @@
|
||||||
# SOME DESCRIPTIVE TITLE.
|
|
||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: \n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2017-07-29 09:13+0200\n"
|
|
||||||
"PO-Revision-Date: 2017-07-29 09:20+0200\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"X-Generator: Poedit 1.8.12\n"
|
|
||||||
"Last-Translator: fat115 <fat115@framasoft.org>\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
|
||||||
"Language: fr\n"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
|
|
||||||
msgstr "** Mode pacifique activé - Aucun monstre ne sera généré"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Mob has been protected!"
|
|
||||||
msgstr "L'animal a été protégé !"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 (Tamed)"
|
|
||||||
msgstr "@1 (apprivoisé)"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Not tamed!"
|
|
||||||
msgstr "Non-apprivoisé !"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 is owner!"
|
|
||||||
msgstr "Appartient à @1 !"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Missed!"
|
|
||||||
msgstr "Raté !"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Already protected!"
|
|
||||||
msgstr "Déjà protégé !"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 at full health (@2)"
|
|
||||||
msgstr "@1 est en pleine forme (@2) "
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 has been tamed!"
|
|
||||||
msgstr "@1 a été apprivoisé ! "
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Enter name:"
|
|
||||||
msgstr "Saisissez un nom :"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Rename"
|
|
||||||
msgstr "Renommer"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Name Tag"
|
|
||||||
msgstr "Étiquette pour collier"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Leather"
|
|
||||||
msgstr "Cuir"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Raw Meat"
|
|
||||||
msgstr "Viande crue"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Meat"
|
|
||||||
msgstr "Viande"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Lasso (right-click animal to put in inventory)"
|
|
||||||
msgstr "Lasso (clic droit sur l'animal pour le mettre dans l'inventaire)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Net (right-click animal to put in inventory)"
|
|
||||||
msgstr "Filet (clic droit sur l'animal pour le mettre dans l'inventaire)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Steel Shears (right-click to shear)"
|
|
||||||
msgstr "Ciseaux à laine (clic droit pour tondre)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Protection Rune"
|
|
||||||
msgstr "Rune de protection des animaux"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Saddle"
|
|
||||||
msgstr "Selle"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Fence"
|
|
||||||
msgstr "Clôture à animaux"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner"
|
|
||||||
msgstr "Générateur de mob"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob MinLight MaxLight Amount PlayerDist"
|
|
||||||
msgstr "Mob MinLumière MaxLumière Quantité DistanceJoueur"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Not Active (enter settings)"
|
|
||||||
msgstr "Générateur non actif (entrez les paramètres)"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Active (@1)"
|
|
||||||
msgstr "Générateur actif (@1)"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner settings failed!"
|
|
||||||
msgstr "Echec des paramètres du générateur"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid ""
|
|
||||||
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
|
|
||||||
"distance[1-20] y_offset[-10 to 10]”"
|
|
||||||
msgstr "Syntaxe : “nom min_lumière[0-14] max_lumière[0-14] max_mobs_dans_zone[0 pour désactiver] distance[1-20] décalage_y[-10 à 10]“"
|
|
|
@ -1,131 +0,0 @@
|
||||||
# ITALIAN LOCALE FILE FOR THE MOBS REDO MODULE
|
|
||||||
# Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1
|
|
||||||
# This file is distributed under the same license as the MOBS REDO package.
|
|
||||||
# Hamlet <h4mlet@riseup.net>, 2017.
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Italian locale file for the Mobs Redo module\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2017-07-02 16:48+0200\n"
|
|
||||||
"PO-Revision-Date: 2017-08-18 12:18+0100\n"
|
|
||||||
"Last-Translator: H4mlet <h4mlet@riseup.net>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"Language: it\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
"X-Generator: Poedit 1.6.10\n"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Mob has been protected!"
|
|
||||||
msgstr "Il mob è stato protetto!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 (Tamed)"
|
|
||||||
msgstr "@1 (Addomesticat*)"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Not tamed!"
|
|
||||||
msgstr "Non addomesticat*!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 is owner!"
|
|
||||||
msgstr "Proprietari* @1!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Missed!"
|
|
||||||
msgstr "Mancat*!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Already protected!"
|
|
||||||
msgstr "Già protett*!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 at full health (@2)"
|
|
||||||
msgstr "@1 in piena salute (@2)"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 has been tamed!"
|
|
||||||
msgstr "@1 è stat* addomesticat*!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Enter name:"
|
|
||||||
msgstr "Inserire il nome:"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Rename"
|
|
||||||
msgstr "Rinominare"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Name Tag"
|
|
||||||
msgstr "Targhetta"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Leather"
|
|
||||||
msgstr "Pelle"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Raw Meat"
|
|
||||||
msgstr "Carne cruda"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Meat"
|
|
||||||
msgstr "Carne"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Lasso (right-click animal to put in inventory)"
|
|
||||||
msgstr "Lazo (click di destro per mettere l'animale nell'inventario)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Net (right-click animal to put in inventory)"
|
|
||||||
msgstr "Rete (click destro per mettere l'animale nell'inventario)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Steel Shears (right-click to shear)"
|
|
||||||
msgstr "Cesoie d'acciaio (click destro per tosare)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Protection Rune"
|
|
||||||
msgstr "Runa di protezione per mob"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Saddle"
|
|
||||||
msgstr "Sella"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Fence"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner"
|
|
||||||
msgstr "Generatore di mob"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob MinLight MaxLight Amount PlayerDist"
|
|
||||||
msgstr "Mob LuceMin LuceMax Ammontare DistGiocat."
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Not Active (enter settings)"
|
|
||||||
msgstr "Generatore inattivo (inserire le impostazioni)"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Active (@1)"
|
|
||||||
msgstr "Generatore attivo (@1)"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner settings failed!"
|
|
||||||
msgstr "Impostazioni del generatore di mob fallite!"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid ""
|
|
||||||
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
|
|
||||||
"distance[1-20] y_offset[-10 to 10]”"
|
|
||||||
msgstr ""
|
|
||||||
"Sintassi: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 per "
|
|
||||||
"disabilitare] distance[1-20] y_offset[-10 to 10]”"
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
# textdomain: mcl_mobs
|
||||||
|
Peaceful mode active! No monsters will spawn.=Friedlicher Modus aktiv! Es werden keine Monster auftauchen.
|
||||||
|
This allows you to place a single mob.=Damit kann man einen Mob platzieren.
|
||||||
|
Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns.=Platzieren Sie dies einfach dort, wo der Mob auftauchen soll. Tiere werden zahm erscheinen, außer, wenn Sie beim Platzieren die Schlichtaste drücken. Platzieren Sie dies auf einem Mobspawner, um den Mob im Mobspawner zu wechseln.
|
||||||
|
You need the “maphack” privilege to change the mob spawner.=Sie brauchen das „maphack“-Privileg, um den Mobspawner ändern zu können.
|
||||||
|
Name Tag=Namensschild
|
||||||
|
A name tag is an item to name a mob.=Ein Namensschild ist ein Gegenstand, um einen Mob zu benennen.
|
||||||
|
Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag.=Bevor Sie ein Namensschild benutzen können, müssen Sie ihn an einem Amboss benennen. Dann können können Sie das Namensschild benutztn, um einen Mob zu benennen. Das wird das Namensschild verbrauchen.
|
||||||
|
Only peaceful mobs allowed!=Nur friedliche Mobs erlaubt!
|
||||||
|
Give names to mobs=Benennt Mobs
|
||||||
|
Set name at anvil=Namen am Amboss setzen
|
|
@ -0,0 +1,9 @@
|
||||||
|
# textdomain: mcl_mobs
|
||||||
|
Peaceful mode active! No monsters will spawn.=¡Modo pacífico activo! No aparecerán monstruos.
|
||||||
|
This allows you to place a single mob.=Esto le permite colocar un solo animal.
|
||||||
|
Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns.=Simplemente colóquelo donde desea que aparezcan los animales. Los animales aparecerán domesticados, a menos que mantenga presionada la tecla de sigilo mientras coloca. Si coloca esto en un engendrador de animales, cambia el animal que genera.
|
||||||
|
You need the “maphack” privilege to change the mob spawner.=Necesita el privilegio "maphack" para cambiar el generador de animales.
|
||||||
|
Name Tag=Etiqueta
|
||||||
|
A name tag is an item to name a mob.=Una etiqueta es un elemento para nombrar una animal.
|
||||||
|
Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag.=Antes de usar la etiqueta, debe establecer un nombre en un yunque. Luego puede usar la etiqueta para nombrar un animal. Esto usa la etiqueta.
|
||||||
|
Only peaceful mobs allowed!=¡Solo se permiten animales pacíficos!
|
|
@ -1,131 +0,0 @@
|
||||||
# SOME DESCRIPTIVE TITLE.
|
|
||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: \n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2018-02-05 23:40+0800\n"
|
|
||||||
"PO-Revision-Date: 2018-02-05 23:51+0800\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"X-Generator: Poedit 2.0.6\n"
|
|
||||||
"Last-Translator: MuhdNurHidayat (MNH48) <mnh48mail@gmail.com>\n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
||||||
"Language: ms\n"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
|
|
||||||
msgstr "** Mod Aman Diaktifkan - Tiada Raksasa Akan Muncul"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Mob has been protected!"
|
|
||||||
msgstr "Mob telah pun dilindungi!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 (Tamed)"
|
|
||||||
msgstr "@1 (Jinak)"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Not tamed!"
|
|
||||||
msgstr "Belum dijinakkan!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 is owner!"
|
|
||||||
msgstr "Ini hak milik @1!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Missed!"
|
|
||||||
msgstr "Terlepas!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Already protected!"
|
|
||||||
msgstr "Telah dilindungi!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 at full health (@2)"
|
|
||||||
msgstr "Mata kesihatan @1 telah penuh (@2)"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 has been tamed!"
|
|
||||||
msgstr "@1 telah dijinakkan!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Enter name:"
|
|
||||||
msgstr "Masukkan nama:"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Rename"
|
|
||||||
msgstr "Namakan semula"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Name Tag"
|
|
||||||
msgstr "Tanda Nama"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Leather"
|
|
||||||
msgstr "Kulit"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Raw Meat"
|
|
||||||
msgstr "Daging Mentah"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Meat"
|
|
||||||
msgstr "Daging Bakar"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Lasso (right-click animal to put in inventory)"
|
|
||||||
msgstr "Tanjul (klik-kanan haiwan untuk masukkan ke inventori)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Net (right-click animal to put in inventory)"
|
|
||||||
msgstr "Jaring (klik-kanan haiwan untuk masukkan ke inventori)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Steel Shears (right-click to shear)"
|
|
||||||
msgstr "Ketam Keluli (klik-kanan untuk mengetam bulu biri-biri)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Protection Rune"
|
|
||||||
msgstr "Rune Perlindungan Mob"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Saddle"
|
|
||||||
msgstr "Pelana"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Fence"
|
|
||||||
msgstr "Pagar Mob"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner"
|
|
||||||
msgstr "Pewujud Mob"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob MinLight MaxLight Amount PlayerDist"
|
|
||||||
msgstr "Mob CahayaMin CahayaMax Amaun JarakPemain"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Not Active (enter settings)"
|
|
||||||
msgstr "Pewujud Mob Tidak Aktif (masukkan tetapan)"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Active (@1)"
|
|
||||||
msgstr "Pewujud Mob Aktif (@1)"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner settings failed!"
|
|
||||||
msgstr "Penetapan Pewujud Mob gagal!"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid ""
|
|
||||||
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
|
|
||||||
"distance[1-20] y_offset[-10 to 10]”"
|
|
||||||
msgstr ""
|
|
||||||
"Sintaks: \"nama cahaya_minimum[0-14] cahaya_maksimum[0-14] "
|
|
||||||
"amaun_mob_maksimum[0 untuk lumpuhkan] jarak[1-20] ketinggian[-10 hingga 10]\""
|
|
|
@ -1,133 +0,0 @@
|
||||||
# SOME DESCRIPTIVE TITLE.
|
|
||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: mobs\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2017-07-02 16:48+0200\n"
|
|
||||||
"PO-Revision-Date: 2017-07-02 14:55+0200\n"
|
|
||||||
"Last-Translator: Wuzzy <almikes@aol.com>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"Language: pt\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"X-Generator: Poedit 2.0.2\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Mob has been protected!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 (Tamed)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Not tamed!"
|
|
||||||
msgstr "Indomesticado!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 is owner!"
|
|
||||||
msgstr "Dono @1!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Missed!"
|
|
||||||
msgstr "Faltou!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Already protected!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 at full health (@2)"
|
|
||||||
msgstr "@1 em plena saude (@2)"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 has been tamed!"
|
|
||||||
msgstr "@1 foi domesticado!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Enter name:"
|
|
||||||
msgstr "Insira um nome:"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Rename"
|
|
||||||
msgstr "Renomear"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Name Tag"
|
|
||||||
msgstr "Etiqueta"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Leather"
|
|
||||||
msgstr "Couro"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Raw Meat"
|
|
||||||
msgstr "Carne crua"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Meat"
|
|
||||||
msgstr "Carne"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
#, fuzzy
|
|
||||||
msgid "Lasso (right-click animal to put in inventory)"
|
|
||||||
msgstr "Laço (clique-direito no animal para por no inventario)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Net (right-click animal to put in inventory)"
|
|
||||||
msgstr "Net (clique-direito no animal para por no inventario)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Steel Shears (right-click to shear)"
|
|
||||||
msgstr "Tesoura de Aço (clique-direito para tosquiar)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Protection Rune"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Saddle"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Fence"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner"
|
|
||||||
msgstr "Spawnador de Mob"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob MinLight MaxLight Amount PlayerDist"
|
|
||||||
msgstr "Mob LuzMinima LuzMaxima Valor DistJogador"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Not Active (enter settings)"
|
|
||||||
msgstr "Spawnador Inativo (configurar)"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Active (@1)"
|
|
||||||
msgstr "Spawnador Ativo (@1)"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner settings failed!"
|
|
||||||
msgstr "Configuraçao de Spawnador do Mob falhou!"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
|
||||||
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
|
|
||||||
"distance[1-20] y_offset[-10 to 10]”"
|
|
||||||
msgstr ""
|
|
||||||
"> nome luz_min[0-14] luz_max[0-14] max_mobs_na_area[0 para desabilitar] "
|
|
||||||
"distancia[1-20] y_offset[-10 a 10]"
|
|
|
@ -1,129 +0,0 @@
|
||||||
# Russian translation for the mobs_redo mod.
|
|
||||||
# Copyright (C) 2018 TenPlus1
|
|
||||||
# This file is distributed under the same license as the mobs_redo package.
|
|
||||||
# Oleg720 <olegsiriak@yandex.ru>, 2017.
|
|
||||||
# CodeXP <codexp@gmx.net>, 2018.
|
|
||||||
#
|
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2017-08-13 15:47+0200\n"
|
|
||||||
"PO-Revision-Date: 2018-03-23 22:22+0100\n"
|
|
||||||
"Last-Translator: CodeXP <codexp@gmx.net>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"Language: ru\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
|
|
||||||
msgstr "** Мирный модус активирован - монстры не спаунятся"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Mob has been protected!"
|
|
||||||
msgstr "Моб защищен!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 (Tamed)"
|
|
||||||
msgstr "@1 (Прирученный)"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Not tamed!"
|
|
||||||
msgstr "Не прирученный"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 is owner!"
|
|
||||||
msgstr "@1 владелец"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Missed!"
|
|
||||||
msgstr "Промазал!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Already protected!"
|
|
||||||
msgstr "Уже защищен!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 at full health (@2)"
|
|
||||||
msgstr "@1 при полном здоровье (@2)"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 has been tamed!"
|
|
||||||
msgstr "@1 приручен"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Enter name:"
|
|
||||||
msgstr "Введите имя:"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Rename"
|
|
||||||
msgstr "Переименовать"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Name Tag"
|
|
||||||
msgstr "Новый тэг"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Leather"
|
|
||||||
msgstr "Кожа"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Raw Meat"
|
|
||||||
msgstr "Сырое мясо"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Meat"
|
|
||||||
msgstr "Мясо"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Lasso (right-click animal to put in inventory)"
|
|
||||||
msgstr "Лассо (Правый клик - положить животное в инвентарь)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Net (right-click animal to put in inventory)"
|
|
||||||
msgstr "Сеть (Правый клик - положить животное в инвентарь)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Steel Shears (right-click to shear)"
|
|
||||||
msgstr "Ножницы (Правый клик - подстричь)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Protection Rune"
|
|
||||||
msgstr "Защитная руна мобов"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Saddle"
|
|
||||||
msgstr "Седло"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Fence"
|
|
||||||
msgstr "Забор от мобов"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner"
|
|
||||||
msgstr "Спаунер моба"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob MinLight MaxLight Amount PlayerDist"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Not Active (enter settings)"
|
|
||||||
msgstr "Спаунер не активен (введите настройки)"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Active (@1)"
|
|
||||||
msgstr "Активные спаунер (@1)"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner settings failed!"
|
|
||||||
msgstr "Настройки спаунера моба провалились"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid ""
|
|
||||||
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
|
|
||||||
"distance[1-20] y_offset[-10 to 10]”"
|
|
||||||
msgstr ""
|
|
|
@ -1,128 +0,0 @@
|
||||||
# SOME DESCRIPTIVE TITLE.
|
|
||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
||||||
#
|
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2017-07-02 16:48+0200\n"
|
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
||||||
"Language: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Mob has been protected!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 (Tamed)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Not tamed!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 is owner!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Missed!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Already protected!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 at full health (@2)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 has been tamed!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Enter name:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Rename"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Name Tag"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Leather"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Raw Meat"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Meat"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Lasso (right-click animal to put in inventory)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Net (right-click animal to put in inventory)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Steel Shears (right-click to shear)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Protection Rune"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Saddle"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Fence"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob MinLight MaxLight Amount PlayerDist"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Not Active (enter settings)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Active (@1)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner settings failed!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid ""
|
|
||||||
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
|
|
||||||
"distance[1-20] y_offset[-10 to 10]”"
|
|
||||||
msgstr ""
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
# textdomain: mcl_mobs
|
||||||
|
Peaceful mode active! No monsters will spawn.=
|
||||||
|
This allows you to place a single mob.=
|
||||||
|
Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns.=
|
||||||
|
You need the “maphack” privilege to change the mob spawner.=
|
||||||
|
Name Tag=
|
||||||
|
A name tag is an item to name a mob.=
|
||||||
|
Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag.=
|
||||||
|
Only peaceful mobs allowed!=
|
||||||
|
Give names to mobs=
|
||||||
|
Set name at anvil=
|
|
@ -1,133 +0,0 @@
|
||||||
# SOME DESCRIPTIVE TITLE.
|
|
||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: mobs\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2017-07-02 16:48+0200\n"
|
|
||||||
"PO-Revision-Date: 2017-07-02 14:56+0200\n"
|
|
||||||
"Last-Translator: Wuzzy <almikes@aol.com>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"Language: tr\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"X-Generator: Poedit 2.0.2\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Mob has been protected!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 (Tamed)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Not tamed!"
|
|
||||||
msgstr "Evcil değil!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 is owner!"
|
|
||||||
msgstr "Sahibi @1!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Missed!"
|
|
||||||
msgstr "Kaçırdın!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Already protected!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 at full health (@2)"
|
|
||||||
msgstr "@1 tam canında (@2)"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "@1 has been tamed!"
|
|
||||||
msgstr "@1 tamamen evcilleştirilmiştir!"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Enter name:"
|
|
||||||
msgstr "İsim gir:"
|
|
||||||
|
|
||||||
#: api.lua
|
|
||||||
msgid "Rename"
|
|
||||||
msgstr "Yeniden adlandır"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Name Tag"
|
|
||||||
msgstr "İsim etiketi"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Leather"
|
|
||||||
msgstr "Deri"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Raw Meat"
|
|
||||||
msgstr "Çiğ et"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Meat"
|
|
||||||
msgstr "Et"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
#, fuzzy
|
|
||||||
msgid "Lasso (right-click animal to put in inventory)"
|
|
||||||
msgstr "Kement (hayvana sağ tıklayarak envantere koy)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Net (right-click animal to put in inventory)"
|
|
||||||
msgstr "Ağ (hayvana sağ tıklayarak envantere koy)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Steel Shears (right-click to shear)"
|
|
||||||
msgstr "Çelik makas (sağ tıklayarak kes)"
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Protection Rune"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Saddle"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: crafts.lua
|
|
||||||
msgid "Mob Fence"
|
|
||||||
msgstr "Canavar Yaratıcı"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner"
|
|
||||||
msgstr "Canavar Yaratıcı"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob MinLight MaxLight Amount PlayerDist"
|
|
||||||
msgstr "Mob MinIşık MaxIşık Miktar OyuncuMesafesi"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Not Active (enter settings)"
|
|
||||||
msgstr "Yaratıcı aktif değil (ayarlara gir)"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Spawner Active (@1)"
|
|
||||||
msgstr "Yaratıcı aktif (@1)"
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
msgid "Mob Spawner settings failed!"
|
|
||||||
msgstr "Yaratıcı ayarları uygulanamadı."
|
|
||||||
|
|
||||||
#: spawner.lua
|
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
|
||||||
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
|
|
||||||
"distance[1-20] y_offset[-10 to 10]”"
|
|
||||||
msgstr ""
|
|
||||||
"> isim min_isik[0-14] max_isik[0-14] alandaki_max_canavar_sayisi[kapatmak "
|
|
||||||
"icin 0] mesafe[1-20] y_cikinti[-10 ve 10 arası]"
|
|
|
@ -1 +1,2 @@
|
||||||
name = mcl_mobs
|
name = mcl_mobs
|
||||||
|
optional_depends = mcl_weather, mcl_tnt, mcl_hunger, mcl_worlds, invisibility, lucky_block, cmi, doc_identifier, mcl_armor
|
||||||
|
|
|
@ -121,7 +121,7 @@ end)
|
||||||
|
|
||||||
function mobs.attach(entity, player)
|
function mobs.attach(entity, player)
|
||||||
|
|
||||||
local attach_at, eye_offset = {}, {}
|
local attach_at, eye_offset
|
||||||
|
|
||||||
entity.player_rotation = entity.player_rotation or {x = 0, y = 0, z = 0}
|
entity.player_rotation = entity.player_rotation or {x = 0, y = 0, z = 0}
|
||||||
entity.driver_attach_at = entity.driver_attach_at or {x = 0, y = 0, z = 0}
|
entity.driver_attach_at = entity.driver_attach_at or {x = 0, y = 0, z = 0}
|
||||||
|
@ -183,14 +183,14 @@ end
|
||||||
|
|
||||||
function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
|
function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
|
||||||
|
|
||||||
local rot_steer, rot_view = math.pi/2, 0
|
local rot_view = 0
|
||||||
|
|
||||||
if entity.player_rotation.y == 90 then
|
if entity.player_rotation.y == 90 then
|
||||||
rot_steer, rot_view = 0, math.pi/2
|
rot_view = math.pi/2
|
||||||
end
|
end
|
||||||
|
|
||||||
local acce_y = 0
|
local acce_y = 0
|
||||||
local velo = entity.object:getvelocity()
|
local velo = entity.object:get_velocity()
|
||||||
|
|
||||||
entity.v = get_v(velo) * get_sign(entity.v)
|
entity.v = get_v(velo) * get_sign(entity.v)
|
||||||
|
|
||||||
|
@ -215,7 +215,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- fix mob rotation
|
-- fix mob rotation
|
||||||
entity.object:setyaw(entity.driver:get_look_horizontal() - entity.rotate)
|
entity.object:set_yaw(entity.driver:get_look_horizontal() - entity.rotate)
|
||||||
|
|
||||||
if can_fly then
|
if can_fly then
|
||||||
|
|
||||||
|
@ -275,7 +275,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
|
||||||
|
|
||||||
if s ~= get_sign(entity.v) then
|
if s ~= get_sign(entity.v) then
|
||||||
|
|
||||||
entity.object:setvelocity({x = 0, y = 0, z = 0})
|
entity.object:set_velocity({x = 0, y = 0, z = 0})
|
||||||
entity.v = 0
|
entity.v = 0
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
@ -293,7 +293,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
|
||||||
|
|
||||||
-- Set position, velocity and acceleration
|
-- Set position, velocity and acceleration
|
||||||
local p = entity.object:get_pos()
|
local p = entity.object:get_pos()
|
||||||
local new_velo = {x = 0, y = 0, z = 0}
|
local new_velo
|
||||||
local new_acce = {x = 0, y = -9.8, z = 0}
|
local new_acce = {x = 0, y = -9.8, z = 0}
|
||||||
|
|
||||||
p.y = p.y - 0.5
|
p.y = p.y - 0.5
|
||||||
|
@ -348,7 +348,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
|
||||||
if math.abs(velo.y) < 1 then
|
if math.abs(velo.y) < 1 then
|
||||||
local pos = entity.object:get_pos()
|
local pos = entity.object:get_pos()
|
||||||
pos.y = math.floor(pos.y) + 0.5
|
pos.y = math.floor(pos.y) + 0.5
|
||||||
entity.object:setpos(pos)
|
entity.object:set_pos(pos)
|
||||||
velo.y = 0
|
velo.y = 0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -360,8 +360,8 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
|
||||||
new_velo = get_velocity(v, entity.object:get_yaw() - rot_view, velo.y)
|
new_velo = get_velocity(v, entity.object:get_yaw() - rot_view, velo.y)
|
||||||
new_acce.y = new_acce.y + acce_y
|
new_acce.y = new_acce.y + acce_y
|
||||||
|
|
||||||
entity.object:setvelocity(new_velo)
|
entity.object:set_velocity(new_velo)
|
||||||
entity.object:setacceleration(new_acce)
|
entity.object:set_acceleration(new_acce)
|
||||||
|
|
||||||
-- CRASH!
|
-- CRASH!
|
||||||
if enable_crash then
|
if enable_crash then
|
||||||
|
@ -387,34 +387,29 @@ end
|
||||||
function mobs.fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim)
|
function mobs.fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim)
|
||||||
|
|
||||||
local ctrl = entity.driver:get_player_control()
|
local ctrl = entity.driver:get_player_control()
|
||||||
local velo = entity.object:getvelocity()
|
local velo = entity.object:get_velocity()
|
||||||
local dir = entity.driver:get_look_dir()
|
local dir = entity.driver:get_look_dir()
|
||||||
local yaw = entity.driver:get_look_horizontal() + 1.57 -- offset fix between old and new commands
|
local yaw = entity.driver:get_look_horizontal() + 1.57 -- offset fix between old and new commands
|
||||||
local rot_steer, rot_view = math.pi / 2, 0
|
|
||||||
|
|
||||||
if entity.player_rotation.y == 90 then
|
|
||||||
rot_steer, rot_view = 0, math.pi / 2
|
|
||||||
end
|
|
||||||
|
|
||||||
if ctrl.up then
|
if ctrl.up then
|
||||||
entity.object:setvelocity({
|
entity.object:set_velocity({
|
||||||
x = dir.x * speed,
|
x = dir.x * speed,
|
||||||
y = dir.y * speed + 2,
|
y = dir.y * speed + 2,
|
||||||
z = dir.z * speed
|
z = dir.z * speed
|
||||||
})
|
})
|
||||||
|
|
||||||
elseif ctrl.down then
|
elseif ctrl.down then
|
||||||
entity.object:setvelocity({
|
entity.object:set_velocity({
|
||||||
x = -dir.x * speed,
|
x = -dir.x * speed,
|
||||||
y = dir.y * speed + 2,
|
y = dir.y * speed + 2,
|
||||||
z = -dir.z * speed
|
z = -dir.z * speed
|
||||||
})
|
})
|
||||||
|
|
||||||
elseif not ctrl.down or ctrl.up or ctrl.jump then
|
elseif not ctrl.down or ctrl.up or ctrl.jump then
|
||||||
entity.object:setvelocity({x = 0, y = -2, z = 0})
|
entity.object:set_velocity({x = 0, y = -2, z = 0})
|
||||||
end
|
end
|
||||||
|
|
||||||
entity.object:setyaw(yaw + math.pi + math.pi / 2 - entity.rotate)
|
entity.object:set_yaw(yaw + math.pi + math.pi / 2 - entity.rotate)
|
||||||
|
|
||||||
-- firing arrows
|
-- firing arrows
|
||||||
if ctrl.LMB and ctrl.sneak and shoots then
|
if ctrl.LMB and ctrl.sneak and shoots then
|
||||||
|
@ -431,8 +426,8 @@ function mobs.fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim)
|
||||||
ent.owner_id = tostring(entity.object) -- so arrows dont hurt entity you are riding
|
ent.owner_id = tostring(entity.object) -- so arrows dont hurt entity you are riding
|
||||||
local vec = {x = dir.x * 6, y = dir.y * 6, z = dir.z * 6}
|
local vec = {x = dir.x * 6, y = dir.y * 6, z = dir.z * 6}
|
||||||
local yaw = entity.driver:get_look_horizontal()
|
local yaw = entity.driver:get_look_horizontal()
|
||||||
obj:setyaw(yaw + math.pi / 2)
|
obj:set_yaw(yaw + math.pi / 2)
|
||||||
obj:setvelocity(vec)
|
obj:set_velocity(vec)
|
||||||
else
|
else
|
||||||
obj:remove()
|
obj:remove()
|
||||||
end
|
end
|
||||||
|
|
|
@ -157,6 +157,7 @@ mobs_mc.follow = {
|
||||||
chicken = { "farming:seed_wheat", "farming:seed_cotton" }, -- seeds in general
|
chicken = { "farming:seed_wheat", "farming:seed_cotton" }, -- seeds in general
|
||||||
parrot = { "farming:seed_wheat", "farming:seed_cotton" }, -- seeds in general
|
parrot = { "farming:seed_wheat", "farming:seed_cotton" }, -- seeds in general
|
||||||
horse = { mobs_mc.items.apple, mobs_mc.items.sugar, mobs_mc.items.wheat, mobs_mc.items.hay_bale, mobs_mc.items.golden_apple, mobs_mc.items.golden_carrot },
|
horse = { mobs_mc.items.apple, mobs_mc.items.sugar, mobs_mc.items.wheat, mobs_mc.items.hay_bale, mobs_mc.items.golden_apple, mobs_mc.items.golden_carrot },
|
||||||
|
llama = { mobs_mc.items.wheat, mobs_mc.items.hay_bale, },
|
||||||
pig = { mobs_mc.items.potato, mobs_mc.items.carrot, mobs_mc.items.carrot_on_a_stick,
|
pig = { mobs_mc.items.potato, mobs_mc.items.carrot, mobs_mc.items.carrot_on_a_stick,
|
||||||
mobs_mc.items.apple, -- Minetest Game extra
|
mobs_mc.items.apple, -- Minetest Game extra
|
||||||
},
|
},
|
||||||
|
|
|
@ -3,21 +3,20 @@
|
||||||
--made for MC like Survival game
|
--made for MC like Survival game
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
|
|
||||||
--dofile(minetest.get_modpath("mobs").."/api.lua")
|
|
||||||
--THIS IS THE MASTER ITEM LIST TO USE WITH DEFAULT
|
--THIS IS THE MASTER ITEM LIST TO USE WITH DEFAULT
|
||||||
|
|
||||||
-- intllib
|
-- NOTE: Most strings intentionally not marked for translation, other mods already have these items.
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
-- TODO: Remove this file eventually, most items are already outsourced in other mods.
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
local S = minetest.get_translator("mobs_mc")
|
||||||
|
|
||||||
local c = mobs_mc.is_item_variable_overridden
|
local c = mobs_mc.is_item_variable_overridden
|
||||||
|
|
||||||
-- Blaze
|
-- Blaze
|
||||||
if c("blaze_rod") then
|
if c("blaze_rod") then
|
||||||
minetest.register_craftitem("mobs_mc:blaze_rod", {
|
minetest.register_craftitem("mobs_mc:blaze_rod", {
|
||||||
description = S("Blaze Rod"),
|
description = "Blaze Rod",
|
||||||
_doc_items_longdesc = S("This is a crafting component dropped from dead blazes."),
|
_doc_items_longdesc = "This is a crafting component dropped from dead blazes.",
|
||||||
wield_image = "mcl_mobitems_blaze_rod.png",
|
wield_image = "mcl_mobitems_blaze_rod.png",
|
||||||
inventory_image = "mcl_mobitems_blaze_rod.png",
|
inventory_image = "mcl_mobitems_blaze_rod.png",
|
||||||
})
|
})
|
||||||
|
@ -43,8 +42,8 @@ end
|
||||||
|
|
||||||
if c("blaze_powder") then
|
if c("blaze_powder") then
|
||||||
minetest.register_craftitem("mobs_mc:blaze_powder", {
|
minetest.register_craftitem("mobs_mc:blaze_powder", {
|
||||||
description = S("Blaze Powder"),
|
description = "Blaze Powder",
|
||||||
_doc_items_longdesc = S("This item is mainly used for brewing potions and crafting."),
|
_doc_items_longdesc = "This item is mainly used for brewing potions and crafting.",
|
||||||
wield_image = "mcl_mobitems_blaze_powder.png",
|
wield_image = "mcl_mobitems_blaze_powder.png",
|
||||||
inventory_image = "mcl_mobitems_blaze_powder.png",
|
inventory_image = "mcl_mobitems_blaze_powder.png",
|
||||||
})
|
})
|
||||||
|
@ -60,8 +59,8 @@ end
|
||||||
-- Chicken
|
-- Chicken
|
||||||
if c("chicken_raw") then
|
if c("chicken_raw") then
|
||||||
minetest.register_craftitem("mobs_mc:chicken_raw", {
|
minetest.register_craftitem("mobs_mc:chicken_raw", {
|
||||||
description = S("Raw Chicken"),
|
description = "Raw Chicken",
|
||||||
_doc_items_longdesc = S("Raw chicken is a food item and can be eaten safely. Cooking it will increase its nutritional value."),
|
_doc_items_longdesc = "Raw chicken is a food item and can be eaten safely. Cooking it will increase its nutritional value.",
|
||||||
inventory_image = "mcl_mobitems_chicken_raw.png",
|
inventory_image = "mcl_mobitems_chicken_raw.png",
|
||||||
groups = { food = 2, eatable = 2 },
|
groups = { food = 2, eatable = 2 },
|
||||||
on_use = minetest.item_eat(2),
|
on_use = minetest.item_eat(2),
|
||||||
|
@ -70,8 +69,8 @@ end
|
||||||
|
|
||||||
if c("chicken_cooked") then
|
if c("chicken_cooked") then
|
||||||
minetest.register_craftitem("mobs_mc:chicken_cooked", {
|
minetest.register_craftitem("mobs_mc:chicken_cooked", {
|
||||||
description = S("Cooked Chicken"),
|
description = "Cooked Chicken",
|
||||||
_doc_items_longdesc = S("A cooked chicken is a healthy food item which can be eaten."),
|
_doc_items_longdesc = "A cooked chicken is a healthy food item which can be eaten.",
|
||||||
inventory_image = "mcl_mobitems_chicken_cooked.png",
|
inventory_image = "mcl_mobitems_chicken_cooked.png",
|
||||||
groups = { food = 2, eatable = 6 },
|
groups = { food = 2, eatable = 6 },
|
||||||
on_use = minetest.item_eat(6),
|
on_use = minetest.item_eat(6),
|
||||||
|
@ -89,8 +88,8 @@ end
|
||||||
|
|
||||||
if c("feather") then
|
if c("feather") then
|
||||||
minetest.register_craftitem("mobs_mc:feather", {
|
minetest.register_craftitem("mobs_mc:feather", {
|
||||||
description = S("Feather"),
|
description = "Feather",
|
||||||
_doc_items_longdesc = S("Feathers are used in crafting and are dropped from chickens."),
|
_doc_items_longdesc = "Feathers are used in crafting and are dropped from chickens.",
|
||||||
inventory_image = "mcl_mobitems_feather.png",
|
inventory_image = "mcl_mobitems_feather.png",
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
@ -98,8 +97,8 @@ end
|
||||||
-- Cow and mooshroom
|
-- Cow and mooshroom
|
||||||
if c("beef_raw") then
|
if c("beef_raw") then
|
||||||
minetest.register_craftitem("mobs_mc:beef_raw", {
|
minetest.register_craftitem("mobs_mc:beef_raw", {
|
||||||
description = S("Raw Beef"),
|
description = "Raw Beef",
|
||||||
_doc_items_longdesc = S("Raw beef is the flesh from cows and can be eaten safely. Cooking it will greatly increase its nutritional value."),
|
_doc_items_longdesc = "Raw beef is the flesh from cows and can be eaten safely. Cooking it will greatly increase its nutritional value.",
|
||||||
inventory_image = "mcl_mobitems_beef_raw.png",
|
inventory_image = "mcl_mobitems_beef_raw.png",
|
||||||
groups = { food = 2, eatable = 3 },
|
groups = { food = 2, eatable = 3 },
|
||||||
on_use = minetest.item_eat(3),
|
on_use = minetest.item_eat(3),
|
||||||
|
@ -108,8 +107,8 @@ end
|
||||||
|
|
||||||
if c("beef_cooked") then
|
if c("beef_cooked") then
|
||||||
minetest.register_craftitem("mobs_mc:beef_cooked", {
|
minetest.register_craftitem("mobs_mc:beef_cooked", {
|
||||||
description = S("Steak"),
|
description = "Steak",
|
||||||
_doc_items_longdesc = S("Steak is cooked beef from cows and can be eaten."),
|
_doc_items_longdesc = "Steak is cooked beef from cows and can be eaten.",
|
||||||
inventory_image = "mcl_mobitems_beef_cooked.png",
|
inventory_image = "mcl_mobitems_beef_cooked.png",
|
||||||
groups = { food = 2, eatable = 8 },
|
groups = { food = 2, eatable = 8 },
|
||||||
on_use = minetest.item_eat(8),
|
on_use = minetest.item_eat(8),
|
||||||
|
@ -129,8 +128,8 @@ end
|
||||||
if c("milk") then
|
if c("milk") then
|
||||||
-- milk
|
-- milk
|
||||||
minetest.register_craftitem("mobs_mc:milk_bucket", {
|
minetest.register_craftitem("mobs_mc:milk_bucket", {
|
||||||
description = S("Milk"),
|
description = "Milk",
|
||||||
_doc_items_longdesc = S("Milk is a food item obtained by using a bucket on a cow."),
|
_doc_items_longdesc = "Milk is a food item obtained by using a bucket on a cow.",
|
||||||
inventory_image = "mobs_bucket_milk.png",
|
inventory_image = "mobs_bucket_milk.png",
|
||||||
groups = { food = 3, eatable = 1 },
|
groups = { food = 3, eatable = 1 },
|
||||||
on_use = minetest.item_eat(1, "bucket:bucket_empty"),
|
on_use = minetest.item_eat(1, "bucket:bucket_empty"),
|
||||||
|
@ -140,8 +139,8 @@ end
|
||||||
|
|
||||||
if c("bowl") then
|
if c("bowl") then
|
||||||
minetest.register_craftitem("mobs_mc:bowl", {
|
minetest.register_craftitem("mobs_mc:bowl", {
|
||||||
description = S("Bowl"),
|
description = "Bowl",
|
||||||
_doc_items_longdesc = S("Bowls are mainly used to hold tasty soups."),
|
_doc_items_longdesc = "Bowls are mainly used to hold tasty soups.",
|
||||||
inventory_image = "mcl_core_bowl.png",
|
inventory_image = "mcl_core_bowl.png",
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -162,8 +161,8 @@ end
|
||||||
|
|
||||||
if c("mushroom_stew") then
|
if c("mushroom_stew") then
|
||||||
minetest.register_craftitem("mobs_mc:mushroom_stew", {
|
minetest.register_craftitem("mobs_mc:mushroom_stew", {
|
||||||
description = S("Mushroom Stew"),
|
description = "Mushroom Stew",
|
||||||
_doc_items_longdesc = S("Mushroom stew is a healthy soup."),
|
_doc_items_longdesc = "Mushroom stew is a healthy soup.",
|
||||||
inventory_image = "farming_mushroom_stew.png",
|
inventory_image = "farming_mushroom_stew.png",
|
||||||
groups = { food = 3, eatable = 6 },
|
groups = { food = 3, eatable = 6 },
|
||||||
on_use = minetest.item_eat(6, "mobs_mc:bowl"),
|
on_use = minetest.item_eat(6, "mobs_mc:bowl"),
|
||||||
|
@ -181,7 +180,7 @@ if c("dragon_egg") then
|
||||||
|
|
||||||
--ender dragon
|
--ender dragon
|
||||||
minetest.register_node("mobs_mc:dragon_egg", {
|
minetest.register_node("mobs_mc:dragon_egg", {
|
||||||
description = S("Dragon Egg"),
|
description = "Dragon Egg",
|
||||||
tiles = {
|
tiles = {
|
||||||
"mcl_end_dragon_egg.png",
|
"mcl_end_dragon_egg.png",
|
||||||
"mcl_end_dragon_egg.png",
|
"mcl_end_dragon_egg.png",
|
||||||
|
@ -225,7 +224,7 @@ end
|
||||||
-- Enderman
|
-- Enderman
|
||||||
if c("ender_eye") then
|
if c("ender_eye") then
|
||||||
minetest.register_craftitem("mobs_mc:ender_eye", {
|
minetest.register_craftitem("mobs_mc:ender_eye", {
|
||||||
description = S("Eye of Ender"),
|
description = "Eye of Ender",
|
||||||
_doc_items_longdesc = longdesc_craftitem,
|
_doc_items_longdesc = longdesc_craftitem,
|
||||||
inventory_image = "mcl_end_ender_eye.png",
|
inventory_image = "mcl_end_ender_eye.png",
|
||||||
groups = { craftitem = 1 },
|
groups = { craftitem = 1 },
|
||||||
|
@ -243,8 +242,8 @@ end
|
||||||
-- Ghast
|
-- Ghast
|
||||||
if c("ghast_tear") then
|
if c("ghast_tear") then
|
||||||
minetest.register_craftitem("mobs_mc:ghast_tear", {
|
minetest.register_craftitem("mobs_mc:ghast_tear", {
|
||||||
description = S("Ghast Tear"),
|
description = "Ghast Tear",
|
||||||
_doc_items_longdesc = S("A ghast tear is an item used in potion brewing. It is dropped from dead ghasts."),
|
_doc_items_longdesc = "A ghast tear is an item used in potion brewing. It is dropped from dead ghasts.",
|
||||||
wield_image = "mcl_mobitems_ghast_tear.png",
|
wield_image = "mcl_mobitems_ghast_tear.png",
|
||||||
inventory_image = "mcl_mobitems_ghast_tear.png",
|
inventory_image = "mcl_mobitems_ghast_tear.png",
|
||||||
groups = { brewitem = 1 },
|
groups = { brewitem = 1 },
|
||||||
|
@ -255,9 +254,9 @@ end
|
||||||
if c("saddle") then
|
if c("saddle") then
|
||||||
-- Overwrite the saddle from Mobs Redo
|
-- Overwrite the saddle from Mobs Redo
|
||||||
minetest.register_craftitem(":mobs:saddle", {
|
minetest.register_craftitem(":mobs:saddle", {
|
||||||
description = S("Saddle"),
|
description = "Saddle",
|
||||||
_doc_items_longdesc = S("Saddles can be put on horses, donkeys, mules and pigs in order to mount them."),
|
_doc_items_longdesc = "Saddles can be put on horses, donkeys, mules and pigs in order to mount them.",
|
||||||
_doc_items_usagehelp = S("Rightclick an animal while holding a saddle to put on the saddle. You can now mount the animal by rightclicking it again."),
|
_doc_items_usagehelp = "Rightclick an animal while holding a saddle to put on the saddle. You can now mount the animal by rightclicking it again.",
|
||||||
inventory_image = "mcl_mobitems_saddle.png",
|
inventory_image = "mcl_mobitems_saddle.png",
|
||||||
stack_max = 1,
|
stack_max = 1,
|
||||||
})
|
})
|
||||||
|
@ -275,7 +274,7 @@ if c("saddle") and c("lether") and c("string") and c("iron_ingot") then
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Horse Armor
|
-- Horse Armor
|
||||||
local horse_armor_use = S("Rightclick a horse to put on the horse armor. Donkeys and mules can't wear horse armor.")
|
local horse_armor_use = S("Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.")
|
||||||
-- TODO: Balance the horse armor strength, compare with MC armor strength
|
-- TODO: Balance the horse armor strength, compare with MC armor strength
|
||||||
if c("iron_horse_armor") then
|
if c("iron_horse_armor") then
|
||||||
minetest.register_craftitem("mobs_mc:iron_horse_armor", {
|
minetest.register_craftitem("mobs_mc:iron_horse_armor", {
|
||||||
|
@ -284,6 +283,9 @@ if c("iron_horse_armor") then
|
||||||
_doc_items_usagehelp = horse_armor_use,
|
_doc_items_usagehelp = horse_armor_use,
|
||||||
inventory_image = "mobs_mc_iron_horse_armor.png",
|
inventory_image = "mobs_mc_iron_horse_armor.png",
|
||||||
_horse_overlay_image = "mobs_mc_horse_armor_iron.png",
|
_horse_overlay_image = "mobs_mc_horse_armor_iron.png",
|
||||||
|
sounds = {
|
||||||
|
_mcl_armor_equip = "mcl_armor_equip_iron",
|
||||||
|
},
|
||||||
stack_max = 1,
|
stack_max = 1,
|
||||||
groups = { horse_armor = 85 },
|
groups = { horse_armor = 85 },
|
||||||
})
|
})
|
||||||
|
@ -295,6 +297,9 @@ if c("gold_horse_armor") then
|
||||||
_doc_items_usagehelp = horse_armor_use,
|
_doc_items_usagehelp = horse_armor_use,
|
||||||
inventory_image = "mobs_mc_gold_horse_armor.png",
|
inventory_image = "mobs_mc_gold_horse_armor.png",
|
||||||
_horse_overlay_image = "mobs_mc_horse_armor_gold.png",
|
_horse_overlay_image = "mobs_mc_horse_armor_gold.png",
|
||||||
|
sounds = {
|
||||||
|
_mcl_armor_equip = "mcl_armor_equip_iron",
|
||||||
|
},
|
||||||
stack_max = 1,
|
stack_max = 1,
|
||||||
groups = { horse_armor = 60 },
|
groups = { horse_armor = 60 },
|
||||||
})
|
})
|
||||||
|
@ -306,6 +311,9 @@ if c("diamond_horse_armor") then
|
||||||
_doc_items_usagehelp = horse_armor_use,
|
_doc_items_usagehelp = horse_armor_use,
|
||||||
inventory_image = "mobs_mc_diamond_horse_armor.png",
|
inventory_image = "mobs_mc_diamond_horse_armor.png",
|
||||||
_horse_overlay_image = "mobs_mc_horse_armor_diamond.png",
|
_horse_overlay_image = "mobs_mc_horse_armor_diamond.png",
|
||||||
|
sounds = {
|
||||||
|
_mcl_armor_equip = "mcl_armor_equip_diamond",
|
||||||
|
},
|
||||||
stack_max = 1,
|
stack_max = 1,
|
||||||
groups = { horse_armor = 45 },
|
groups = { horse_armor = 45 },
|
||||||
})
|
})
|
||||||
|
@ -314,8 +322,8 @@ end
|
||||||
-- Pig
|
-- Pig
|
||||||
if c("porkchop_raw") then
|
if c("porkchop_raw") then
|
||||||
minetest.register_craftitem("mobs_mc:porkchop_raw", {
|
minetest.register_craftitem("mobs_mc:porkchop_raw", {
|
||||||
description = S("Raw Porkchop"),
|
description = "Raw Porkchop",
|
||||||
_doc_items_longdesc = S("A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it will greatly increase its nutritional value."),
|
_doc_items_longdesc = "A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it will greatly increase its nutritional value.",
|
||||||
inventory_image = "mcl_mobitems_porkchop_raw.png",
|
inventory_image = "mcl_mobitems_porkchop_raw.png",
|
||||||
groups = { food = 2, eatable = 3 },
|
groups = { food = 2, eatable = 3 },
|
||||||
on_use = minetest.item_eat(3),
|
on_use = minetest.item_eat(3),
|
||||||
|
@ -324,7 +332,7 @@ end
|
||||||
|
|
||||||
if c("porkchop_cooked") then
|
if c("porkchop_cooked") then
|
||||||
minetest.register_craftitem("mobs_mc:porkchop_cooked", {
|
minetest.register_craftitem("mobs_mc:porkchop_cooked", {
|
||||||
description = S("Cooked Porkchop"),
|
description = "Cooked Porkchop",
|
||||||
_doc_items_longdesc = "Cooked porkchop is the cooked flesh of a pig and is used as food.",
|
_doc_items_longdesc = "Cooked porkchop is the cooked flesh of a pig and is used as food.",
|
||||||
inventory_image = "mcl_mobitems_porkchop_cooked.png",
|
inventory_image = "mcl_mobitems_porkchop_cooked.png",
|
||||||
groups = { food = 2, eatable = 8 },
|
groups = { food = 2, eatable = 8 },
|
||||||
|
@ -343,9 +351,9 @@ end
|
||||||
|
|
||||||
if c("carrot_on_a_stick") then
|
if c("carrot_on_a_stick") then
|
||||||
minetest.register_tool("mobs_mc:carrot_on_a_stick", {
|
minetest.register_tool("mobs_mc:carrot_on_a_stick", {
|
||||||
description = S("Carrot on a Stick"),
|
description = "Carrot on a Stick",
|
||||||
_doc_items_longdesc = S("A carrot on a stick can be used on saddled pigs to ride them. Pigs will also follow anyone who holds a carrot on a stick near them."),
|
_doc_items_longdesc = "A carrot on a stick can be used on saddled pigs to ride them. Pigs will also follow anyone who holds a carrot on a stick near them.",
|
||||||
_doc_items_usagehelp = S("Rightclick a saddled pig with the carrot on a stick to mount it. You can now ride it like a horse."),
|
_doc_items_usagehelp = "Rightclick a saddled pig with the carrot on a stick to mount it. You can now ride it like a horse.",
|
||||||
wield_image = "mcl_mobitems_carrot_on_a_stick.png",
|
wield_image = "mcl_mobitems_carrot_on_a_stick.png",
|
||||||
inventory_image = "mcl_mobitems_carrot_on_a_stick.png",
|
inventory_image = "mcl_mobitems_carrot_on_a_stick.png",
|
||||||
sounds = { breaks = "default_tool_breaks" },
|
sounds = { breaks = "default_tool_breaks" },
|
||||||
|
@ -385,8 +393,8 @@ end
|
||||||
-- Rabbit
|
-- Rabbit
|
||||||
if c("rabbit_raw") then
|
if c("rabbit_raw") then
|
||||||
minetest.register_craftitem("mobs_mc:rabbit_raw", {
|
minetest.register_craftitem("mobs_mc:rabbit_raw", {
|
||||||
description = S("Raw Rabbit"),
|
description = "Raw Rabbit",
|
||||||
_doc_items_longdesc = S("Raw rabbit is a food item from a dead rabbit. It can be eaten safely. Cooking it will increase its nutritional value."),
|
_doc_items_longdesc = "Raw rabbit is a food item from a dead rabbit. It can be eaten safely. Cooking it will increase its nutritional value.",
|
||||||
inventory_image = "mcl_mobitems_rabbit_raw.png",
|
inventory_image = "mcl_mobitems_rabbit_raw.png",
|
||||||
groups = { food = 2, eatable = 3 },
|
groups = { food = 2, eatable = 3 },
|
||||||
on_use = minetest.item_eat(3),
|
on_use = minetest.item_eat(3),
|
||||||
|
@ -395,8 +403,8 @@ end
|
||||||
|
|
||||||
if c("rabbit_cooked") then
|
if c("rabbit_cooked") then
|
||||||
minetest.register_craftitem("mobs_mc:rabbit_cooked", {
|
minetest.register_craftitem("mobs_mc:rabbit_cooked", {
|
||||||
description = S("Cooked Rabbit"),
|
description = "Cooked Rabbit",
|
||||||
_doc_items_longdesc = S("This is a food item which can be eaten."),
|
_doc_items_longdesc = "This is a food item which can be eaten.",
|
||||||
inventory_image = "mcl_mobitems_rabbit_cooked.png",
|
inventory_image = "mcl_mobitems_rabbit_cooked.png",
|
||||||
groups = { food = 2, eatable = 5 },
|
groups = { food = 2, eatable = 5 },
|
||||||
on_use = minetest.item_eat(5),
|
on_use = minetest.item_eat(5),
|
||||||
|
@ -414,8 +422,8 @@ end
|
||||||
|
|
||||||
if c("rabbit_hide") then
|
if c("rabbit_hide") then
|
||||||
minetest.register_craftitem("mobs_mc:rabbit_hide", {
|
minetest.register_craftitem("mobs_mc:rabbit_hide", {
|
||||||
description = S("Rabbit Hide"),
|
description = "Rabbit Hide",
|
||||||
_doc_items_longdesc = S("Rabbit hide is used to create leather."),
|
_doc_items_longdesc = "Rabbit hide is used to create leather.",
|
||||||
inventory_image = "mcl_mobitems_rabbit_hide.png"
|
inventory_image = "mcl_mobitems_rabbit_hide.png"
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
@ -432,8 +440,8 @@ end
|
||||||
|
|
||||||
if c("rabbit_foot") then
|
if c("rabbit_foot") then
|
||||||
minetest.register_craftitem("mobs_mc:rabbit_foot", {
|
minetest.register_craftitem("mobs_mc:rabbit_foot", {
|
||||||
description = S("Rabbit's Foot"),
|
description = "Rabbit's Foot",
|
||||||
_doc_items_longdesc = S("This item is used in brewing."),
|
_doc_items_longdesc = "This item is used in brewing.",
|
||||||
inventory_image = "mcl_mobitems_rabbit_foot.png"
|
inventory_image = "mcl_mobitems_rabbit_foot.png"
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
@ -441,8 +449,8 @@ end
|
||||||
-- Sheep
|
-- Sheep
|
||||||
if c("mutton_raw") then
|
if c("mutton_raw") then
|
||||||
minetest.register_craftitem("mobs_mc:mutton_raw", {
|
minetest.register_craftitem("mobs_mc:mutton_raw", {
|
||||||
description = S("Raw Mutton"),
|
description = "Raw Mutton",
|
||||||
_doc_items_longdesc = S("Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it will greatly increase its nutritional value."),
|
_doc_items_longdesc = "Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it will greatly increase its nutritional value.",
|
||||||
inventory_image = "mcl_mobitems_mutton_raw.png",
|
inventory_image = "mcl_mobitems_mutton_raw.png",
|
||||||
groups = { food = 2, eatable = 4 },
|
groups = { food = 2, eatable = 4 },
|
||||||
on_use = minetest.item_eat(4),
|
on_use = minetest.item_eat(4),
|
||||||
|
@ -451,8 +459,8 @@ end
|
||||||
|
|
||||||
if c("mutton_cooked") then
|
if c("mutton_cooked") then
|
||||||
minetest.register_craftitem("mobs_mc:mutton_cooked", {
|
minetest.register_craftitem("mobs_mc:mutton_cooked", {
|
||||||
description = S("Cooked Mutton"),
|
description = "Cooked Mutton",
|
||||||
_doc_items_longdesc = S("Cooked mutton is the cooked flesh from a sheep and is used as food."),
|
_doc_items_longdesc = "Cooked mutton is the cooked flesh from a sheep and is used as food.",
|
||||||
inventory_image = "mcl_mobitems_mutton_cooked.png",
|
inventory_image = "mcl_mobitems_mutton_cooked.png",
|
||||||
groups = { food = 2, eatable = 8 },
|
groups = { food = 2, eatable = 8 },
|
||||||
on_use = minetest.item_eat(8),
|
on_use = minetest.item_eat(8),
|
||||||
|
@ -471,8 +479,8 @@ end
|
||||||
-- Shulker
|
-- Shulker
|
||||||
if c("shulker_shell") then
|
if c("shulker_shell") then
|
||||||
minetest.register_craftitem("mobs_mc:shulker_shell", {
|
minetest.register_craftitem("mobs_mc:shulker_shell", {
|
||||||
description = S("Shulker Shell"),
|
description = "Shulker Shell",
|
||||||
_doc_items_longdesc = S("Shulker shells are used in crafting. They are dropped from dead shulkers."),
|
_doc_items_longdesc = "Shulker shells are used in crafting. They are dropped from dead shulkers.",
|
||||||
inventory_image = "mcl_mobitems_shulker_shell.png",
|
inventory_image = "mcl_mobitems_shulker_shell.png",
|
||||||
groups = { craftitem = 1 },
|
groups = { craftitem = 1 },
|
||||||
})
|
})
|
||||||
|
@ -481,8 +489,8 @@ end
|
||||||
-- Magma cube
|
-- Magma cube
|
||||||
if c("magma_cream") then
|
if c("magma_cream") then
|
||||||
minetest.register_craftitem("mobs_mc:magma_cream", {
|
minetest.register_craftitem("mobs_mc:magma_cream", {
|
||||||
description = S("Magma Cream"),
|
description = "Magma Cream",
|
||||||
_doc_items_longdesc = S("Magma cream is a crafting component."),
|
_doc_items_longdesc = "Magma cream is a crafting component.",
|
||||||
wield_image = "mcl_mobitems_magma_cream.png",
|
wield_image = "mcl_mobitems_magma_cream.png",
|
||||||
inventory_image = "mcl_mobitems_magma_cream.png",
|
inventory_image = "mcl_mobitems_magma_cream.png",
|
||||||
groups = { brewitem = 1 },
|
groups = { brewitem = 1 },
|
||||||
|
@ -492,8 +500,8 @@ end
|
||||||
-- Slime
|
-- Slime
|
||||||
if c("slimeball") then
|
if c("slimeball") then
|
||||||
minetest.register_craftitem("mobs_mc:slimeball", {
|
minetest.register_craftitem("mobs_mc:slimeball", {
|
||||||
description = S("Slimeball"),
|
description = "Slimeball",
|
||||||
_doc_items_longdesc = S("Slimeballs are used in crafting. They are dropped from slimes."),
|
_doc_items_longdesc = "Slimeballs are used in crafting. They are dropped from slimes.",
|
||||||
inventory_image = "mcl_mobitems_slimeball.png"
|
inventory_image = "mcl_mobitems_slimeball.png"
|
||||||
})
|
})
|
||||||
if minetest.get_modpath("mesecons_materials") then
|
if minetest.get_modpath("mesecons_materials") then
|
||||||
|
@ -507,8 +515,8 @@ end
|
||||||
-- Spider
|
-- Spider
|
||||||
if c("spider_eye") then
|
if c("spider_eye") then
|
||||||
minetest.register_craftitem("mobs_mc:spider_eye", {
|
minetest.register_craftitem("mobs_mc:spider_eye", {
|
||||||
description = S("Spider Eye"),
|
description = "Spider Eye",
|
||||||
_doc_items_longdesc = S("Spider eyes are used mainly in crafting and brewing. Spider eyes can be eaten, but they poison you and reduce your health by 2 hit points."),
|
_doc_items_longdesc = "Spider eyes are used mainly in crafting and brewing. Spider eyes can be eaten, but they poison you and reduce your health by 2 hit points.",
|
||||||
inventory_image = "mcl_mobitems_spider_eye.png",
|
inventory_image = "mcl_mobitems_spider_eye.png",
|
||||||
wield_image = "mcl_mobitems_spider_eye.png",
|
wield_image = "mcl_mobitems_spider_eye.png",
|
||||||
-- Simplified poisonous food
|
-- Simplified poisonous food
|
||||||
|
@ -524,6 +532,7 @@ if c("totem") then
|
||||||
-- Totem of Undying
|
-- Totem of Undying
|
||||||
minetest.register_craftitem("mobs_mc:totem", {
|
minetest.register_craftitem("mobs_mc:totem", {
|
||||||
description = S("Totem of Undying"),
|
description = S("Totem of Undying"),
|
||||||
|
_tt_help = minetest.colorize("#00FF00", S("Protects you from death while wielding it")),
|
||||||
_doc_items_longdesc = S("A totem of undying is a rare artifact which may safe you from certain death."),
|
_doc_items_longdesc = S("A totem of undying is a rare artifact which may safe you from certain death."),
|
||||||
_doc_items_usagehelp = S("The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however."),
|
_doc_items_usagehelp = S("The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however."),
|
||||||
inventory_image = "mcl_totems_totem.png",
|
inventory_image = "mcl_totems_totem.png",
|
||||||
|
@ -593,8 +602,8 @@ end
|
||||||
-- Rotten flesh
|
-- Rotten flesh
|
||||||
if c("rotten_flesh") then
|
if c("rotten_flesh") then
|
||||||
minetest.register_craftitem("mobs_mc:rotten_flesh", {
|
minetest.register_craftitem("mobs_mc:rotten_flesh", {
|
||||||
description = S("Rotten Flesh"),
|
description = "Rotten Flesh",
|
||||||
_doc_items_longdesc = S("Yuck! This piece of flesh clearly has seen better days. Eating it will only poison you and reduces your health by 4 hit points. But tamed wolves can eat it just fine."),
|
_doc_items_longdesc = "Yuck! This piece of flesh clearly has seen better days. Eating it will only poison you and reduces your health by 4 hit points. But tamed wolves can eat it just fine.",
|
||||||
inventory_image = "mcl_mobitems_rotten_flesh.png",
|
inventory_image = "mcl_mobitems_rotten_flesh.png",
|
||||||
-- Simplified poisonous food
|
-- Simplified poisonous food
|
||||||
groups = { food = 2, eatable = -4 },
|
groups = { food = 2, eatable = -4 },
|
||||||
|
@ -605,8 +614,8 @@ end
|
||||||
-- Misc.
|
-- Misc.
|
||||||
if c("nether_star") then
|
if c("nether_star") then
|
||||||
minetest.register_craftitem("mobs_mc:nether_star", {
|
minetest.register_craftitem("mobs_mc:nether_star", {
|
||||||
description = S("Nether Star"),
|
description = "Nether Star",
|
||||||
_doc_items_longdesc = S("A nether star is a crafting component. It is dropped from the Wither."),
|
_doc_items_longdesc = "A nether star is a crafting component. It is dropped from the Wither.",
|
||||||
inventory_image = "mcl_mobitems_nether_star.png"
|
inventory_image = "mcl_mobitems_nether_star.png"
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
@ -634,9 +643,9 @@ end
|
||||||
|
|
||||||
if c("bone") then
|
if c("bone") then
|
||||||
minetest.register_craftitem("mobs_mc:bone", {
|
minetest.register_craftitem("mobs_mc:bone", {
|
||||||
description = S("Bone"),
|
description = "Bone",
|
||||||
_doc_items_longdesc = S("Bones can be used to tame wolves so they will protect you. They are also useful as a crafting ingredient."),
|
_doc_items_longdesc = "Bones can be used to tame wolves so they will protect you. They are also useful as a crafting ingredient.",
|
||||||
_doc_items_usagehelp = S("Hold the bone in your hand near wolves to attract them. Rightclick the wolf to give it a bone and tame it."),
|
_doc_items_usagehelp = "Hold the bone in your hand near wolves to attract them. Rightclick the wolf to give it a bone and tame it.",
|
||||||
inventory_image = "mcl_mobitems_bone.png"
|
inventory_image = "mcl_mobitems_bone.png"
|
||||||
})
|
})
|
||||||
if minetest.get_modpath("bones") then
|
if minetest.get_modpath("bones") then
|
||||||
|
|
|
@ -3,9 +3,10 @@
|
||||||
--made for MC like Survival game
|
--made for MC like Survival game
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
-- NOTE: Strings intentionally not marked for translation, other mods already have these items.
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
-- TODO: Remove this file eventually, all items here are already outsourced in other mods.
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
local S = minetest.get_translator("mobs_mc")
|
||||||
|
|
||||||
--maikerumines throwing code
|
--maikerumines throwing code
|
||||||
--arrow (weapon)
|
--arrow (weapon)
|
||||||
|
@ -14,15 +15,18 @@ local c = mobs_mc.is_item_variable_overridden
|
||||||
|
|
||||||
minetest.register_node("mobs_mc:arrow_box", {
|
minetest.register_node("mobs_mc:arrow_box", {
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
|
is_ground_content = false,
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
-- Shaft
|
-- Shaft
|
||||||
{-6.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17},
|
{-6.5/17, -1.5/17, -1.5/17, -4.5/17, 1.5/17, 1.5/17},
|
||||||
--Spitze
|
{-4.5/17, -0.5/17, -0.5/17, 5.5/17, 0.5/17, 0.5/17},
|
||||||
|
{5.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17},
|
||||||
|
-- Tip
|
||||||
{-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17},
|
{-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17},
|
||||||
{-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17},
|
{-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17},
|
||||||
--Federn
|
-- Fletching
|
||||||
{6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17},
|
{6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17},
|
||||||
{7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17},
|
{7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17},
|
||||||
{7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17},
|
{7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17},
|
||||||
|
@ -35,7 +39,16 @@ minetest.register_node("mobs_mc:arrow_box", {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
tiles = {"mcl_bows_arrow.png^[transformFX", "mcl_bows_arrow.png^[transformFX", "mcl_bows_arrow_back.png", "mcl_bows_arrow_front.png", "mcl_bows_arrow.png", "mcl_bows_arrow.png^[transformFX"},
|
tiles = {"mcl_bows_arrow.png^[transformFX", "mcl_bows_arrow.png^[transformFX", "mcl_bows_arrow_back.png", "mcl_bows_arrow_front.png", "mcl_bows_arrow.png", "mcl_bows_arrow.png^[transformFX"},
|
||||||
groups = {not_in_creative_inventory=1},
|
paramtype = "light",
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
groups = {not_in_creative_inventory=1, dig_immediate=3},
|
||||||
|
node_placement_prediction = "",
|
||||||
|
on_construct = function(pos)
|
||||||
|
minetest.log("error", "[mobs_mc] Trying to construct mobs_mc:arrow_box at "..minetest.pos_to_string(pos))
|
||||||
|
minetest.remove_node(pos)
|
||||||
|
end,
|
||||||
|
drop = "",
|
||||||
})
|
})
|
||||||
|
|
||||||
local THROWING_ARROW_ENTITY={
|
local THROWING_ARROW_ENTITY={
|
||||||
|
@ -116,9 +129,9 @@ local throwing_shoot_arrow = function(itemstack, player)
|
||||||
local playerpos = player:get_pos()
|
local playerpos = player:get_pos()
|
||||||
local obj = minetest.add_entity({x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, arrow[2]) --mc
|
local obj = minetest.add_entity({x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, arrow[2]) --mc
|
||||||
local dir = player:get_look_dir()
|
local dir = player:get_look_dir()
|
||||||
obj:setvelocity({x=dir.x*22, y=dir.y*22, z=dir.z*22})
|
obj:set_velocity({x=dir.x*22, y=dir.y*22, z=dir.z*22})
|
||||||
obj:setacceleration({x=dir.x*-3, y=-10, z=dir.z*-3})
|
obj:set_acceleration({x=dir.x*-3, y=-10, z=dir.z*-3})
|
||||||
obj:setyaw(player:get_look_yaw()+math.pi)
|
obj:set_yaw(player:get_look_yaw()+math.pi)
|
||||||
minetest.sound_play("throwing_sound", {pos=playerpos})
|
minetest.sound_play("throwing_sound", {pos=playerpos})
|
||||||
if obj:get_luaentity().player == "" then
|
if obj:get_luaentity().player == "" then
|
||||||
obj:get_luaentity().player = player
|
obj:get_luaentity().player = player
|
||||||
|
@ -132,9 +145,9 @@ end
|
||||||
|
|
||||||
if c("arrow") then
|
if c("arrow") then
|
||||||
minetest.register_craftitem("mobs_mc:arrow", {
|
minetest.register_craftitem("mobs_mc:arrow", {
|
||||||
description = S("Arrow"),
|
description = "Arrow",
|
||||||
_doc_items_longdesc = S("Arrows are ammunition for bows."),
|
_doc_items_longdesc = "Arrows are ammunition for bows.",
|
||||||
_doc_items_usagehelp = S("To use arrows as ammunition for a bow, put them in the inventory slot following the bow. Slots are counted left to right, top to bottom."),
|
_doc_items_usagehelp = "To use arrows as ammunition for a bow, put them in the inventory slot following the bow. Slots are counted left to right, top to bottom.",
|
||||||
inventory_image = "mcl_bows_arrow_inv.png",
|
inventory_image = "mcl_bows_arrow_inv.png",
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
@ -152,9 +165,9 @@ end
|
||||||
|
|
||||||
if c("bow") then
|
if c("bow") then
|
||||||
minetest.register_tool("mobs_mc:bow_wood", {
|
minetest.register_tool("mobs_mc:bow_wood", {
|
||||||
description = S("Bow"),
|
description = "Bow",
|
||||||
_doc_items_longdesc = S("Bows are ranged weapons to shoot arrows at your foes."),
|
_doc_items_longdesc = "Bows are ranged weapons to shoot arrows at your foes.",
|
||||||
_doc_items_usagehelp = S("To use the bow, you first need to have at least one arrow in slot following the bow. Leftclick to shoot. Each hit deals 3 damage."),
|
_doc_items_usagehelp = "To use the bow, you first need to have at least one arrow in slot following the bow. Leftclick to shoot. Each hit deals 3 damage.",
|
||||||
inventory_image = "mcl_bows_bow.png",
|
inventory_image = "mcl_bows_bow.png",
|
||||||
on_use = function(itemstack, user, pointed_thing)
|
on_use = function(itemstack, user, pointed_thing)
|
||||||
if throwing_shoot_arrow(itemstack, user, pointed_thing) then
|
if throwing_shoot_arrow(itemstack, user, pointed_thing) then
|
||||||
|
@ -197,8 +210,8 @@ if c("egg") then
|
||||||
}, nil)
|
}, nil)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
hit_mob = function(self, player)
|
hit_mob = function(self, mob)
|
||||||
player:punch(minetest.get_player_by_name(self.playername) or self.object, 1.0, {
|
mob:punch(minetest.get_player_by_name(self.playername) or self.object, 1.0, {
|
||||||
full_punch_interval = 1.0,
|
full_punch_interval = 1.0,
|
||||||
damage_groups = {},
|
damage_groups = {},
|
||||||
}, nil)
|
}, nil)
|
||||||
|
@ -267,13 +280,13 @@ if c("egg") then
|
||||||
ent.velocity = egg_VELOCITY -- needed for api internal timing
|
ent.velocity = egg_VELOCITY -- needed for api internal timing
|
||||||
ent.switch = 1 -- needed so that egg doesn't despawn straight away
|
ent.switch = 1 -- needed so that egg doesn't despawn straight away
|
||||||
|
|
||||||
obj:setvelocity({
|
obj:set_velocity({
|
||||||
x = dir.x * egg_VELOCITY,
|
x = dir.x * egg_VELOCITY,
|
||||||
y = dir.y * egg_VELOCITY,
|
y = dir.y * egg_VELOCITY,
|
||||||
z = dir.z * egg_VELOCITY
|
z = dir.z * egg_VELOCITY
|
||||||
})
|
})
|
||||||
|
|
||||||
obj:setacceleration({
|
obj:set_acceleration({
|
||||||
x = dir.x * -3,
|
x = dir.x * -3,
|
||||||
y = -egg_GRAVITY,
|
y = -egg_GRAVITY,
|
||||||
z = dir.z * -3
|
z = dir.z * -3
|
||||||
|
@ -291,8 +304,8 @@ if c("egg") then
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_craftitem("mobs_mc:egg", {
|
minetest.register_craftitem("mobs_mc:egg", {
|
||||||
description = S("Egg"),
|
description = "Egg",
|
||||||
_doc_items_longdesc = S("Eggs can be thrown and break on impact. There is a small chance that 1 or even 4 chicks will pop out"),
|
_doc_items_longdesc = "Eggs can be thrown and break on impact. There is a small chance that 1 or even 4 chicks will pop out",
|
||||||
_doc_items_usagehelp = how_to_throw,
|
_doc_items_usagehelp = how_to_throw,
|
||||||
inventory_image = "mobs_chicken_egg.png",
|
inventory_image = "mobs_chicken_egg.png",
|
||||||
on_use = mobs_shoot_egg,
|
on_use = mobs_shoot_egg,
|
||||||
|
@ -351,13 +364,13 @@ if c("snowball") then
|
||||||
ent.velocity = snowball_VELOCITY -- needed for api internal timing
|
ent.velocity = snowball_VELOCITY -- needed for api internal timing
|
||||||
ent.switch = 1 -- needed so that egg doesn't despawn straight away
|
ent.switch = 1 -- needed so that egg doesn't despawn straight away
|
||||||
|
|
||||||
obj:setvelocity({
|
obj:set_velocity({
|
||||||
x = dir.x * snowball_VELOCITY,
|
x = dir.x * snowball_VELOCITY,
|
||||||
y = dir.y * snowball_VELOCITY,
|
y = dir.y * snowball_VELOCITY,
|
||||||
z = dir.z * snowball_VELOCITY
|
z = dir.z * snowball_VELOCITY
|
||||||
})
|
})
|
||||||
|
|
||||||
obj:setacceleration({
|
obj:set_acceleration({
|
||||||
x = dir.x * -3,
|
x = dir.x * -3,
|
||||||
y = -snowball_GRAVITY,
|
y = -snowball_GRAVITY,
|
||||||
z = dir.z * -3
|
z = dir.z * -3
|
||||||
|
@ -377,8 +390,8 @@ if c("snowball") then
|
||||||
|
|
||||||
-- Snowball
|
-- Snowball
|
||||||
minetest.register_craftitem("mobs_mc:snowball", {
|
minetest.register_craftitem("mobs_mc:snowball", {
|
||||||
description = S("Snowball"),
|
description = "Snowball",
|
||||||
_doc_items_longdesc = S("Snowballs can be thrown at your enemies. A snowball deals 3 damage to blazes, but is harmless to anything else."),
|
_doc_items_longdesc = "Snowballs can be thrown at your enemies. A snowball deals 3 damage to blazes, but is harmless to anything else.",
|
||||||
_doc_items_usagehelp = how_to_throw,
|
_doc_items_usagehelp = how_to_throw,
|
||||||
inventory_image = "mcl_throwing_snowball.png",
|
inventory_image = "mcl_throwing_snowball.png",
|
||||||
on_use = mobs_shoot_snowball,
|
on_use = mobs_shoot_snowball,
|
||||||
|
|
|
@ -53,7 +53,7 @@ mobs_mc.make_owner_teleport_function = function(dist, teleport_check_interval)
|
||||||
if minetest.registered_nodes[minetest.get_node(telepos).name].walkable == false and
|
if minetest.registered_nodes[minetest.get_node(telepos).name].walkable == false and
|
||||||
minetest.registered_nodes[minetest.get_node(telepos_below).name].walkable == true then
|
minetest.registered_nodes[minetest.get_node(telepos_below).name].walkable == true then
|
||||||
-- Correct position found! Let's teleport.
|
-- Correct position found! Let's teleport.
|
||||||
self.object:setpos(telepos)
|
self.object:set_pos(telepos)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
--MC Heads for minetest
|
--MC Heads for minetest
|
||||||
--maikerumine
|
--maikerumine
|
||||||
|
|
||||||
-- intllib
|
-- NOTE: Strings intentionally not marked for translation, other mods already have these items.
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
-- TODO: Remove this file eventually, all items here are already outsourced in other mods.
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
local S = minetest.get_translator("mobs_mc")
|
||||||
|
|
||||||
-- Heads system
|
-- Heads system
|
||||||
|
|
||||||
|
@ -55,7 +56,7 @@ local function addhead(mobname, desc, longdesc)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Add heads
|
-- Add heads
|
||||||
addhead("zombie", S("Zombie Head"), S("A zombie head is a small decorative block which resembles the head of a zombie."))
|
addhead("zombie", "Zombie Head", "A zombie head is a small decorative block which resembles the head of a zombie.")
|
||||||
addhead("creeper", S("Creeper Head"), S("A creeper head is a small decorative block which resembles the head of a creeper."))
|
addhead("creeper", "Creeper Head", "A creeper head is a small decorative block which resembles the head of a creeper.")
|
||||||
addhead("skeleton", S("Skeleton Skull"), S("A skeleton skull is a small decorative block which resembles the skull of a skeleton."))
|
addhead("skeleton", "Skeleton Skull", "A skeleton skull is a small decorative block which resembles the skull of a skeleton.")
|
||||||
addhead("wither_skeleton", S("Wither Skeleton Skull"), S("A wither skeleton skull is a small decorative block which resembles the skull of a wither skeleton."))
|
addhead("wither_skeleton", "Wither Skeleton Skull", "A wither skeleton skull is a small decorative block which resembles the skull of a wither skeleton.")
|
||||||
|
|
|
@ -81,6 +81,9 @@ Origin of those models:
|
||||||
|
|
||||||
* PilzAdam and Wuzzy (CC0)
|
* PilzAdam and Wuzzy (CC0)
|
||||||
* `mobs_mc_chicken_lay_egg.ogg`
|
* `mobs_mc_chicken_lay_egg.ogg`
|
||||||
|
* [AGFX](http://www.freesound.org/people/DrMinky/sounds/) (CC0)
|
||||||
|
* `mobs_mc_chicken_child.ogg`
|
||||||
|
* Source: <https://freesound.org/people/AGFX/sounds/43380/>
|
||||||
* Randomation (CC0)
|
* Randomation (CC0)
|
||||||
* `green_slime_damage.ogg`
|
* `green_slime_damage.ogg`
|
||||||
* `green_slime_attack.ogg`
|
* `green_slime_attack.ogg`
|
||||||
|
|
|
@ -2,9 +2,7 @@
|
||||||
--################### AGENT
|
--################### AGENT
|
||||||
--###################
|
--###################
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
mobs:register_mob("mobs_mc:agent", {
|
mobs:register_mob("mobs_mc:agent", {
|
||||||
type = "npc",
|
type = "npc",
|
||||||
|
@ -21,6 +19,7 @@ mobs:register_mob("mobs_mc:agent", {
|
||||||
},
|
},
|
||||||
-- TODO: sounds
|
-- TODO: sounds
|
||||||
visual_size = {x=3, y=3},
|
visual_size = {x=3, y=3},
|
||||||
|
walk_chance = 0,
|
||||||
walk_velocity = 0.6,
|
walk_velocity = 0.6,
|
||||||
run_velocity = 2,
|
run_velocity = 2,
|
||||||
jump = true,
|
jump = true,
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
mobs:register_mob("mobs_mc:bat", {
|
mobs:register_mob("mobs_mc:bat", {
|
||||||
type = "animal",
|
type = "animal",
|
||||||
|
@ -42,14 +40,10 @@ mobs:register_mob("mobs_mc:bat", {
|
||||||
]]
|
]]
|
||||||
},
|
},
|
||||||
|
|
||||||
water_damage = 1,
|
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
fall_damage = 0,
|
fall_damage = 0,
|
||||||
view_range = 16,
|
view_range = 16,
|
||||||
|
|
||||||
fly = true,
|
fly = true,
|
||||||
fly_in = "air",
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,11 +3,8 @@
|
||||||
-- Model and mobs_blaze.png see https://github.com/22i/minecraft-voxel-blender-models
|
-- Model and mobs_blaze.png see https://github.com/22i/minecraft-voxel-blender-models
|
||||||
-- blaze.lua partial copy of mobs_mc/ghast.lua
|
-- blaze.lua partial copy of mobs_mc/ghast.lua
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
--dofile(minetest.get_modpath("mobs").."/api.lua")
|
|
||||||
--###################
|
--###################
|
||||||
--################### BLAZE
|
--################### BLAZE
|
||||||
--###################
|
--###################
|
||||||
|
@ -24,6 +21,7 @@ mobs:register_mob("mobs_mc:blaze", {
|
||||||
textures = {
|
textures = {
|
||||||
{"mobs_mc_blaze.png"},
|
{"mobs_mc_blaze.png"},
|
||||||
},
|
},
|
||||||
|
armor = { fleshy = 100, snowball_vulnerable = 100 },
|
||||||
visual_size = {x=3, y=3},
|
visual_size = {x=3, y=3},
|
||||||
sounds = {
|
sounds = {
|
||||||
random = "mobs_mc_blaze_breath",
|
random = "mobs_mc_blaze_breath",
|
||||||
|
@ -56,6 +54,7 @@ mobs:register_mob("mobs_mc:blaze", {
|
||||||
-- MC Wiki: takes 1 damage every half second while in water
|
-- MC Wiki: takes 1 damage every half second while in water
|
||||||
water_damage = 2,
|
water_damage = 2,
|
||||||
lava_damage = 0,
|
lava_damage = 0,
|
||||||
|
fire_damage = 0,
|
||||||
fall_damage = 0,
|
fall_damage = 0,
|
||||||
fall_speed = -2.25,
|
fall_speed = -2.25,
|
||||||
light_damage = 0,
|
light_damage = 0,
|
||||||
|
@ -63,13 +62,13 @@ mobs:register_mob("mobs_mc:blaze", {
|
||||||
attack_type = "dogshoot",
|
attack_type = "dogshoot",
|
||||||
arrow = "mobs_mc:blaze_fireball",
|
arrow = "mobs_mc:blaze_fireball",
|
||||||
shoot_interval = 3.5,
|
shoot_interval = 3.5,
|
||||||
|
shoot_offset = 1.0,
|
||||||
passive = false,
|
passive = false,
|
||||||
jump = true,
|
jump = true,
|
||||||
jump_height = 4,
|
jump_height = 4,
|
||||||
fly = true,
|
fly = true,
|
||||||
jump_chance = 98,
|
fear_height = 0,
|
||||||
fear_height = 120,
|
glow = 14,
|
||||||
blood_amount = 0,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
mobs:spawn_specific("mobs_mc:blaze", mobs_mc.spawn.nether_fortress, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 5000, 3, mobs_mc.spawn_height.nether_min, mobs_mc.spawn_height.nether_max)
|
mobs:spawn_specific("mobs_mc:blaze", mobs_mc.spawn.nether_fortress, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 5000, 3, mobs_mc.spawn_height.nether_min, mobs_mc.spawn_height.nether_max)
|
||||||
|
@ -79,7 +78,7 @@ mobs:register_arrow("mobs_mc:blaze_fireball", {
|
||||||
visual = "sprite",
|
visual = "sprite",
|
||||||
visual_size = {x = 0.3, y = 0.3},
|
visual_size = {x = 0.3, y = 0.3},
|
||||||
textures = {"mcl_fire_fire_charge.png"},
|
textures = {"mcl_fire_fire_charge.png"},
|
||||||
velocity = 12,
|
velocity = 15,
|
||||||
|
|
||||||
-- Direct hit, no fire... just plenty of pain
|
-- Direct hit, no fire... just plenty of pain
|
||||||
hit_player = function(self, player)
|
hit_player = function(self, player)
|
||||||
|
@ -89,19 +88,28 @@ mobs:register_arrow("mobs_mc:blaze_fireball", {
|
||||||
}, nil)
|
}, nil)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
hit_mob = function(self, player)
|
hit_mob = function(self, mob)
|
||||||
player:punch(self.object, 1.0, {
|
mob:punch(self.object, 1.0, {
|
||||||
full_punch_interval = 1.0,
|
full_punch_interval = 1.0,
|
||||||
damage_groups = {fleshy = 5},
|
damage_groups = {fleshy = 5},
|
||||||
}, nil)
|
}, nil)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
hit_object = function(self, object)
|
||||||
|
local lua = object:get_luaentity()
|
||||||
|
if lua then
|
||||||
|
if lua.name == "mcl_minecarts:tnt_minecart" then
|
||||||
|
lua:on_activate_by_rail(2)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
|
||||||
-- Node hit, make fire
|
-- Node hit, make fire
|
||||||
hit_node = function(self, pos, node)
|
hit_node = function(self, pos, node)
|
||||||
if node.name == "air" then
|
if node.name == "air" then
|
||||||
minetest.set_node(pos_above, {name=mobs_mc.items.fire})
|
minetest.set_node(pos_above, {name=mobs_mc.items.fire})
|
||||||
else
|
else
|
||||||
local v = self.object:getvelocity()
|
local v = self.object:get_velocity()
|
||||||
v = vector.normalize(v)
|
v = vector.normalize(v)
|
||||||
local crashpos = vector.subtract(pos, v)
|
local crashpos = vector.subtract(pos, v)
|
||||||
local crashnode = minetest.get_node(crashpos)
|
local crashnode = minetest.get_node(crashpos)
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
|
|
||||||
--dofile(minetest.get_modpath("mobs").."/api.lua")
|
|
||||||
|
|
||||||
--###################
|
--###################
|
||||||
--################### CHICKEN
|
--################### CHICKEN
|
||||||
|
@ -40,9 +35,6 @@ mobs:register_mob("mobs_mc:chicken", {
|
||||||
min = 0,
|
min = 0,
|
||||||
max = 2,},
|
max = 2,},
|
||||||
},
|
},
|
||||||
water_damage = 1,
|
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
fall_damage = 0,
|
fall_damage = 0,
|
||||||
fall_speed = -2.25,
|
fall_speed = -2.25,
|
||||||
sounds = {
|
sounds = {
|
||||||
|
@ -50,6 +42,12 @@ mobs:register_mob("mobs_mc:chicken", {
|
||||||
-- TODO: death, damage
|
-- TODO: death, damage
|
||||||
distance = 16,
|
distance = 16,
|
||||||
},
|
},
|
||||||
|
sounds_child = {
|
||||||
|
random = "mobs_mc_chicken_child",
|
||||||
|
damage = "mobs_mc_chicken_child",
|
||||||
|
death = "mobs_mc_chicken_child",
|
||||||
|
distance = 16,
|
||||||
|
},
|
||||||
animation = {
|
animation = {
|
||||||
stand_speed = 25, walk_speed = 25, run_speed = 50,
|
stand_speed = 25, walk_speed = 25, run_speed = 50,
|
||||||
stand_start = 0, stand_end = 0,
|
stand_start = 0, stand_end = 0,
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
local cow_def = {
|
local cow_def = {
|
||||||
type = "animal",
|
type = "animal",
|
||||||
|
@ -28,9 +26,6 @@ local cow_def = {
|
||||||
min = 0,
|
min = 0,
|
||||||
max = 2,},
|
max = 2,},
|
||||||
},
|
},
|
||||||
water_damage = 1,
|
|
||||||
lava_damage = 5,
|
|
||||||
light_damage = 0,
|
|
||||||
runaway = true,
|
runaway = true,
|
||||||
sounds = {
|
sounds = {
|
||||||
random = "mobs_mc_cow",
|
random = "mobs_mc_cow",
|
||||||
|
@ -100,10 +95,10 @@ mooshroom_def.on_rightclick = function(self, clicker)
|
||||||
minetest.add_item({x=pos.x, y=pos.y+1.4, z=pos.z}, mobs_mc.items.mushroom_red .. " 5")
|
minetest.add_item({x=pos.x, y=pos.y+1.4, z=pos.z}, mobs_mc.items.mushroom_red .. " 5")
|
||||||
end
|
end
|
||||||
|
|
||||||
local oldyaw = self.object:getyaw()
|
local oldyaw = self.object:get_yaw()
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
local cow = minetest.add_entity(pos, "mobs_mc:cow")
|
local cow = minetest.add_entity(pos, "mobs_mc:cow")
|
||||||
cow:setyaw(oldyaw)
|
cow:set_yaw(oldyaw)
|
||||||
|
|
||||||
if not minetest.settings:get_bool("creative_mode") then
|
if not minetest.settings:get_bool("creative_mode") then
|
||||||
item:add_wear(mobs_mc.misc.shears_wear)
|
item:add_wear(mobs_mc.misc.shears_wear)
|
||||||
|
@ -143,9 +138,6 @@ mobs:register_mob("mobs_mc:mooshroom", mooshroom_def)
|
||||||
mobs:spawn_specific("mobs_mc:cow", mobs_mc.spawn.grassland, {"air"}, 9, minetest.LIGHT_MAX+1, 30, 17000, 20, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
|
mobs:spawn_specific("mobs_mc:cow", mobs_mc.spawn.grassland, {"air"}, 9, minetest.LIGHT_MAX+1, 30, 17000, 20, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
|
||||||
mobs:spawn_specific("mobs_mc:mooshroom", mobs_mc.spawn.mushroom_island, {"air"}, 9, minetest.LIGHT_MAX+1, 30, 17000, 10, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
|
mobs:spawn_specific("mobs_mc:mooshroom", mobs_mc.spawn.mushroom_island, {"air"}, 9, minetest.LIGHT_MAX+1, 30, 17000, 10, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
|
||||||
|
|
||||||
-- compatibility
|
|
||||||
mobs:alias_mob("mobs_animal:cow", "mobs_mc:cow")
|
|
||||||
|
|
||||||
-- spawn egg
|
-- spawn egg
|
||||||
mobs:register_egg("mobs_mc:cow", S("Cow"), "mobs_mc_spawn_icon_cow.png", 0)
|
mobs:register_egg("mobs_mc:cow", S("Cow"), "mobs_mc_spawn_icon_cow.png", 0)
|
||||||
mobs:register_egg("mobs_mc:mooshroom", S("Mooshroom"), "mobs_mc_spawn_icon_mooshroom.png", 0)
|
mobs:register_egg("mobs_mc:mooshroom", S("Mooshroom"), "mobs_mc_spawn_icon_mooshroom.png", 0)
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
--dofile(minetest.get_modpath("mobs").."/api.lua")
|
|
||||||
|
|
||||||
|
|
||||||
--###################
|
--###################
|
||||||
--################### CREEPER
|
--################### CREEPER
|
||||||
|
@ -74,7 +69,7 @@ mobs:register_mob("mobs_mc:creeper", {
|
||||||
if self._forced_explosion_countdown_timer ~= nil then
|
if self._forced_explosion_countdown_timer ~= nil then
|
||||||
self._forced_explosion_countdown_timer = self._forced_explosion_countdown_timer - dtime
|
self._forced_explosion_countdown_timer = self._forced_explosion_countdown_timer - dtime
|
||||||
if self._forced_explosion_countdown_timer <= 0 then
|
if self._forced_explosion_countdown_timer <= 0 then
|
||||||
mobs:explosion(self.object:get_pos(), self.explosion_radius, 0, 1, self.sounds.explode)
|
mobs:boom(self, self.object:get_pos(), self.explosion_radius)
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -119,18 +114,12 @@ mobs:register_mob("mobs_mc:creeper", {
|
||||||
},
|
},
|
||||||
floats = 1,
|
floats = 1,
|
||||||
fear_height = 4,
|
fear_height = 4,
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
view_range = 16,
|
view_range = 16,
|
||||||
blood_amount = 0,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
mobs:spawn_specific("mobs_mc:creeper", mobs_mc.spawn.solid, {"air"}, 0, 7, 20, 16500, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
|
mobs:spawn_specific("mobs_mc:creeper", mobs_mc.spawn.solid, {"air"}, 0, 7, 20, 16500, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
|
||||||
|
|
||||||
-- compatibility
|
|
||||||
mobs:alias_mob("mobs:creeper", "mobs_mc:creeper")
|
|
||||||
|
|
||||||
-- spawn eggs
|
-- spawn eggs
|
||||||
mobs:register_egg("mobs_mc:creeper", S("Creeper"), "mobs_mc_spawn_icon_creeper.png", 0)
|
mobs:register_egg("mobs_mc:creeper", S("Creeper"), "mobs_mc_spawn_icon_creeper.png", 0)
|
||||||
|
|
||||||
|
|
|
@ -8,5 +8,4 @@ mcl_fishing?
|
||||||
bones?
|
bones?
|
||||||
mesecons_materials?
|
mesecons_materials?
|
||||||
mobs_mc_gameconfig?
|
mobs_mc_gameconfig?
|
||||||
intllib?
|
|
||||||
doc_items?
|
doc_items?
|
||||||
|
|
|
@ -2,39 +2,8 @@
|
||||||
--################### ENDERDRAGON
|
--################### ENDERDRAGON
|
||||||
--###################
|
--###################
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
--[[
|
|
||||||
mobs:register_mob("mobs_mc:12enderdragon", {
|
|
||||||
type = "animal",
|
|
||||||
passive = true,
|
|
||||||
runaway = true,
|
|
||||||
stepheight = 1.2,
|
|
||||||
hp_min = 30,
|
|
||||||
hp_max = 60,
|
|
||||||
armor = 150,
|
|
||||||
collisionbox = {-0.35, -0.01, -0.35, 0.35, 2, 0.35},
|
|
||||||
visual = "mesh",
|
|
||||||
mesh = "enderdragon.b3d",
|
|
||||||
textures = {
|
|
||||||
{"enderdragon.png"},
|
|
||||||
},
|
|
||||||
visual_size = {x=1, y=1},
|
|
||||||
walk_velocity = 0.6,
|
|
||||||
run_velocity = 2,
|
|
||||||
jump = true,
|
|
||||||
animation = {
|
|
||||||
speed_normal = 25, speed_run = 50,
|
|
||||||
stand_start = 0, stand_end = 20,
|
|
||||||
walk_start = 0, walk_end = 20,
|
|
||||||
run_start = 0, run_end = 20,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
mobs:register_egg("mobs_mc:12enderdragon", "Enderdragon", "enderdragon_inv.png", 0)
|
|
||||||
]]
|
|
||||||
mobs:register_mob("mobs_mc:enderdragon", {
|
mobs:register_mob("mobs_mc:enderdragon", {
|
||||||
type = "monster",
|
type = "monster",
|
||||||
pathfinding = 1,
|
pathfinding = 1,
|
||||||
|
@ -64,10 +33,7 @@ mobs:register_mob("mobs_mc:enderdragon", {
|
||||||
jump = true,
|
jump = true,
|
||||||
jump_height = 14,
|
jump_height = 14,
|
||||||
stepheight = 1.2,
|
stepheight = 1.2,
|
||||||
jump_chance = 100,
|
|
||||||
fear_height = 120,
|
|
||||||
fly = true,
|
fly = true,
|
||||||
fly_in = {"air"},
|
|
||||||
dogshoot_switch = 1,
|
dogshoot_switch = 1,
|
||||||
dogshoot_count_max =5,
|
dogshoot_count_max =5,
|
||||||
dogshoot_count2_max = 5,
|
dogshoot_count2_max = 5,
|
||||||
|
@ -79,21 +45,19 @@ mobs:register_mob("mobs_mc:enderdragon", {
|
||||||
min = 1,
|
min = 1,
|
||||||
max = 1},
|
max = 1},
|
||||||
},
|
},
|
||||||
water_damage = 0,
|
|
||||||
lava_damage = 0,
|
lava_damage = 0,
|
||||||
light_damage = 0,
|
fire_damage = 0,
|
||||||
on_rightclick = nil,
|
on_rightclick = nil,
|
||||||
attack_type = "dogshoot",
|
attack_type = "dogshoot",
|
||||||
arrow = "mobs_mc:fireball2",
|
arrow = "mobs_mc:dragon_fireball",
|
||||||
shoot_interval = 0.5,
|
shoot_interval = 0.5,
|
||||||
shoot_offset = -1,
|
shoot_offset = -1.0,
|
||||||
animation = {
|
animation = {
|
||||||
fly_speed = 8, stand_speed = 8,
|
fly_speed = 8, stand_speed = 8,
|
||||||
stand_start = 0, stand_end = 20,
|
stand_start = 0, stand_end = 20,
|
||||||
walk_start = 0, walk_end = 20,
|
walk_start = 0, walk_end = 20,
|
||||||
run_start = 0, run_end = 20,
|
run_start = 0, run_end = 20,
|
||||||
},
|
},
|
||||||
blood_amount = 0,
|
|
||||||
|
|
||||||
ignores_nametag = true,
|
ignores_nametag = true,
|
||||||
})
|
})
|
||||||
|
@ -101,69 +65,19 @@ mobs:register_mob("mobs_mc:enderdragon", {
|
||||||
|
|
||||||
local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false
|
local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false
|
||||||
|
|
||||||
mobs:register_arrow("mobs_mc:roar_of_the_dragon2", {
|
-- dragon fireball (projectile)
|
||||||
|
mobs:register_arrow("mobs_mc:dragon_fireball", {
|
||||||
visual = "sprite",
|
visual = "sprite",
|
||||||
visual_size = {x = 1, y = 1},
|
visual_size = {x = 1.25, y = 1.25},
|
||||||
--textures = {"transparent.png"},
|
|
||||||
textures = {"mese_egg.png"},
|
|
||||||
velocity = 10,
|
|
||||||
|
|
||||||
on_step = function(self, dtime)
|
|
||||||
|
|
||||||
local pos = self.object:get_pos()
|
|
||||||
|
|
||||||
local n = minetest.get_node(pos).name
|
|
||||||
|
|
||||||
if self.timer == 0 then
|
|
||||||
self.timer = os.time()
|
|
||||||
end
|
|
||||||
|
|
||||||
if os.time() - self.timer > 8 or minetest.is_protected(pos, "") then
|
|
||||||
self.object:remove()
|
|
||||||
end
|
|
||||||
|
|
||||||
local objects = minetest.get_objects_inside_radius(pos, 1)
|
|
||||||
for _,obj in ipairs(objects) do
|
|
||||||
local name = self.name
|
|
||||||
if name~="mobs_mc:roar_of_the_dragon2" and name ~= "mobs_mc:enderdragon" then
|
|
||||||
obj:set_hp(obj:get_hp()-0.05)
|
|
||||||
if (obj:get_hp() <= 0) then
|
|
||||||
if (not obj:is_player()) and name ~= self.object:get_luaentity().name then
|
|
||||||
obj:remove()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if mobs_griefing then
|
|
||||||
minetest.set_node(pos, {name="air"})
|
|
||||||
if math.random(1,2)==1 then
|
|
||||||
local dx = math.random(-1,1)
|
|
||||||
local dy = math.random(-1,1)
|
|
||||||
local dz = math.random(-1,1)
|
|
||||||
local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
|
||||||
minetest.set_node(p, {name="air"})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
})
|
|
||||||
--GOOD LUCK LOL!
|
|
||||||
-- fireball (weapon)
|
|
||||||
mobs:register_arrow(":mobs_mc:fireball2", {
|
|
||||||
visual = "sprite",
|
|
||||||
visual_size = {x = 1.5, y = 1.5},
|
|
||||||
textures = {"mobs_mc_dragon_fireball.png"},
|
textures = {"mobs_mc_dragon_fireball.png"},
|
||||||
--textures = {"mobs_skeleton2_front.png^[makealpha:255,255,255 "},
|
|
||||||
velocity = 6,
|
velocity = 6,
|
||||||
|
|
||||||
-- direct hit, no fire... just plenty of pain
|
-- direct hit, no fire... just plenty of pain
|
||||||
hit_player = function(self, player)
|
hit_player = function(self, player)
|
||||||
minetest.sound_play("tnt_explode", {pos = player:get_pos(), gain = 1.5, max_hear_distance = 2*64})
|
|
||||||
player:punch(self.object, 1.0, {
|
player:punch(self.object, 1.0, {
|
||||||
full_punch_interval = 0.5,
|
full_punch_interval = 0.5,
|
||||||
damage_groups = {fleshy = 6},
|
damage_groups = {fleshy = 12},
|
||||||
}, nil)
|
}, nil)
|
||||||
|
|
||||||
end,
|
end,
|
||||||
|
|
||||||
hit_mob = function(self, mob)
|
hit_mob = function(self, mob)
|
||||||
|
@ -172,16 +86,12 @@ mobs:register_arrow(":mobs_mc:fireball2", {
|
||||||
full_punch_interval = 0.5,
|
full_punch_interval = 0.5,
|
||||||
damage_groups = {fleshy = 12},
|
damage_groups = {fleshy = 12},
|
||||||
}, nil)
|
}, nil)
|
||||||
|
|
||||||
end,
|
end,
|
||||||
|
|
||||||
-- node hit, bursts into flame
|
-- node hit, explode
|
||||||
hit_node = function(self, pos, node)
|
hit_node = function(self, pos, node)
|
||||||
mobs:explosion(pos, 3, 0, 1)
|
mobs:boom(self, pos, 2)
|
||||||
--from tnt
|
|
||||||
minetest.sound_play("tnt_explode", {pos = pos, gain = 1.5, max_hear_distance = 2*64})
|
|
||||||
|
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
mobs:register_egg("mobs_mc:enderdragon", S("Ender Dragon"), "mobs_mc_spawn_icon_dragon.png", 0)
|
mobs:register_egg("mobs_mc:enderdragon", S("Ender Dragon"), "mobs_mc_spawn_icon_dragon.png", 0, true)
|
||||||
|
|
|
@ -10,12 +10,7 @@
|
||||||
-- and they are provoked by looking directly at them.
|
-- and they are provoked by looking directly at them.
|
||||||
-- TODO: Implement MC behaviour.
|
-- TODO: Implement MC behaviour.
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
--dofile(minetest.get_modpath("mobs").."/api.lua")
|
|
||||||
|
|
||||||
|
|
||||||
--###################
|
--###################
|
||||||
--################### ENDERMAN
|
--################### ENDERMAN
|
||||||
|
@ -314,7 +309,7 @@ mobs:register_mob("mobs_mc:enderman", {
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if telepos then
|
if telepos then
|
||||||
self.object:setpos(telepos)
|
self.object:set_pos(telepos)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
@ -325,14 +320,11 @@ mobs:register_mob("mobs_mc:enderman", {
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
water_damage = 8,
|
water_damage = 8,
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
-- TODO: Increase view range when it detects being seen
|
-- TODO: Increase view range when it detects being seen
|
||||||
-- Low view range to emulate that behaviour somehow
|
-- Low view range to emulate that behaviour somehow
|
||||||
view_range = 4,
|
view_range = 4,
|
||||||
fear_height = 4,
|
fear_height = 4,
|
||||||
attack_type = "dogfight",
|
attack_type = "dogfight",
|
||||||
blood_amount = 0,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,7 @@
|
||||||
--################### ENDERMITE
|
--################### ENDERMITE
|
||||||
--###################
|
--###################
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
mobs:register_mob("mobs_mc:endermite", {
|
mobs:register_mob("mobs_mc:endermite", {
|
||||||
type = "monster",
|
type = "monster",
|
||||||
|
@ -29,14 +27,10 @@ mobs:register_mob("mobs_mc:endermite", {
|
||||||
walk_velocity = 1,
|
walk_velocity = 1,
|
||||||
run_velocity = 2,
|
run_velocity = 2,
|
||||||
jump = true,
|
jump = true,
|
||||||
water_damage = 0,
|
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
fear_height = 4,
|
fear_height = 4,
|
||||||
view_range = 16,
|
view_range = 16,
|
||||||
damage = 2,
|
damage = 2,
|
||||||
reach = 1,
|
reach = 1,
|
||||||
blood_amount = 0,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
mobs:register_egg("mobs_mc:endermite", S("Endermite"), "mobs_mc_spawn_icon_endermite.png", 0)
|
mobs:register_egg("mobs_mc:endermite", S("Endermite"), "mobs_mc_spawn_icon_endermite.png", 0)
|
||||||
|
|
|
@ -3,11 +3,7 @@
|
||||||
--made for MC like Survival game
|
--made for MC like Survival game
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
--dofile(minetest.get_modpath("mobs").."/api.lua")
|
|
||||||
|
|
||||||
--###################
|
--###################
|
||||||
--################### GHAST
|
--################### GHAST
|
||||||
|
@ -57,17 +53,12 @@ mobs:register_mob("mobs_mc:ghast", {
|
||||||
walk_start = 0, walk_end = 40,
|
walk_start = 0, walk_end = 40,
|
||||||
run_start = 0, run_end = 40,
|
run_start = 0, run_end = 40,
|
||||||
},
|
},
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
fall_damage = 0,
|
fall_damage = 0,
|
||||||
view_range = 100,
|
view_range = 100,
|
||||||
--attack_type = "dogshoot",
|
|
||||||
attack_type = "dogshoot",
|
attack_type = "dogshoot",
|
||||||
arrow = "mobs_monster:fireball",
|
arrow = "mobs_mc:fireball",
|
||||||
shoot_interval = 3.5,
|
shoot_interval = 3.5,
|
||||||
shoot_offset = 1,
|
shoot_offset = -5,
|
||||||
--'dogshoot_switch' allows switching between shoot and dogfight modes inside dogshoot using timer (1 = shoot, 2 = dogfight)
|
|
||||||
--'dogshoot_count_max' number of seconds before switching above modes.
|
|
||||||
dogshoot_switch = 1,
|
dogshoot_switch = 1,
|
||||||
dogshoot_count_max =1,
|
dogshoot_count_max =1,
|
||||||
passive = false,
|
passive = false,
|
||||||
|
@ -75,40 +66,38 @@ mobs:register_mob("mobs_mc:ghast", {
|
||||||
jump_height = 4,
|
jump_height = 4,
|
||||||
floats=1,
|
floats=1,
|
||||||
fly = true,
|
fly = true,
|
||||||
fly_in = {"air"},
|
|
||||||
jump_chance = 98,
|
|
||||||
fear_height = 120,
|
|
||||||
blood_amount = 0,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
mobs:spawn_specific("mobs_mc:ghast", mobs_mc.spawn.nether, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 18000, 2, mobs_mc.spawn_height.nether_min, mobs_mc.spawn_height.nether_max)
|
mobs:spawn_specific("mobs_mc:ghast", mobs_mc.spawn.nether, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 18000, 2, mobs_mc.spawn_height.nether_min, mobs_mc.spawn_height.nether_max)
|
||||||
|
|
||||||
-- fireball (weapon)
|
-- fireball (projectile)
|
||||||
mobs:register_arrow(":mobs_monster:fireball", {
|
mobs:register_arrow("mobs_mc:fireball", {
|
||||||
visual = "sprite",
|
visual = "sprite",
|
||||||
visual_size = {x = 0.5, y = 0.5},
|
visual_size = {x = 1, y = 1},
|
||||||
textures = {"mcl_fire_fire_charge.png"},
|
textures = {"mcl_fire_fire_charge.png"},
|
||||||
velocity = 6,
|
velocity = 15,
|
||||||
|
|
||||||
-- direct hit, no fire... just plenty of pain
|
-- direct hit, no fire... just plenty of pain
|
||||||
hit_player = function(self, player)
|
hit_player = function(self, player)
|
||||||
player:punch(self.object, 1.0, {
|
player:punch(self.object, 1.0, {
|
||||||
full_punch_interval = 1.0,
|
full_punch_interval = 1.0,
|
||||||
damage_groups = {fleshy = 8},
|
damage_groups = {fleshy = 6},
|
||||||
}, nil)
|
}, nil)
|
||||||
|
mobs:boom(self, self.object:get_pos(), 3)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
hit_mob = function(self, player)
|
hit_mob = function(self, mob)
|
||||||
player:punch(self.object, 1.0, {
|
mob:punch(self.object, 1.0, {
|
||||||
full_punch_interval = 1.0,
|
full_punch_interval = 1.0,
|
||||||
damage_groups = {fleshy = 8},
|
damage_groups = {fleshy = 6},
|
||||||
}, nil)
|
}, nil)
|
||||||
|
mobs:boom(self, self.object:get_pos(), 3)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
-- node hit, bursts into flame
|
-- node hit, explode
|
||||||
hit_node = function(self, pos, node)
|
hit_node = function(self, pos, node)
|
||||||
mobs:explosion(pos, 1, 1, 0)
|
mobs:boom(self, pos, 3)
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -4,14 +4,13 @@
|
||||||
--################### GUARDIAN
|
--################### GUARDIAN
|
||||||
--###################
|
--###################
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
mobs:register_mob("mobs_mc:guardian", {
|
mobs:register_mob("mobs_mc:guardian", {
|
||||||
type = "monster",
|
type = "monster",
|
||||||
hp_min = 30,
|
hp_min = 30,
|
||||||
hp_max = 30,
|
hp_max = 30,
|
||||||
|
breath_max = -1,
|
||||||
passive = false,
|
passive = false,
|
||||||
attack_type = "dogfight",
|
attack_type = "dogfight",
|
||||||
pathfinding = 1,
|
pathfinding = 1,
|
||||||
|
@ -39,10 +38,12 @@ mobs:register_mob("mobs_mc:guardian", {
|
||||||
run_start = 0, run_end = 20,
|
run_start = 0, run_end = 20,
|
||||||
},
|
},
|
||||||
drops = {
|
drops = {
|
||||||
|
-- Greatly increased amounts of prismarine
|
||||||
{name = mobs_mc.items.prismarine_shard,
|
{name = mobs_mc.items.prismarine_shard,
|
||||||
chance = 1,
|
chance = 1,
|
||||||
min = 0,
|
min = 0,
|
||||||
max = 2,},
|
max = 32,},
|
||||||
|
-- TODO: Reduce of drops when ocean monument is ready.
|
||||||
|
|
||||||
-- The following drops are approximations
|
-- The following drops are approximations
|
||||||
-- Fish / prismarine crystal
|
-- Fish / prismarine crystal
|
||||||
|
@ -53,7 +54,7 @@ mobs:register_mob("mobs_mc:guardian", {
|
||||||
{name = mobs_mc.items.prismarine_crystals,
|
{name = mobs_mc.items.prismarine_crystals,
|
||||||
chance = 4,
|
chance = 4,
|
||||||
min = 1,
|
min = 1,
|
||||||
max = 1,},
|
max = 2,},
|
||||||
|
|
||||||
-- Rare drop: fish
|
-- Rare drop: fish
|
||||||
{name = mobs_mc.items.fish_raw,
|
{name = mobs_mc.items.fish_raw,
|
||||||
|
@ -78,10 +79,6 @@ mobs:register_mob("mobs_mc:guardian", {
|
||||||
stepheight = 0.1,
|
stepheight = 0.1,
|
||||||
jump = false,
|
jump = false,
|
||||||
view_range = 16,
|
view_range = 16,
|
||||||
water_damage = 0,
|
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
blood_amount = 0,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
mobs:spawn_specific("mobs_mc:guardian", mobs_mc.spawn.water, mobs_mc.spawn_water, 0, minetest.LIGHT_MAX+1, 30, 25000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.water - 10)
|
mobs:spawn_specific("mobs_mc:guardian", mobs_mc.spawn.water, mobs_mc.spawn_water, 0, minetest.LIGHT_MAX+1, 30, 25000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.water - 10)
|
||||||
|
|
|
@ -4,14 +4,13 @@
|
||||||
--################### GUARDIAN
|
--################### GUARDIAN
|
||||||
--###################
|
--###################
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
mobs:register_mob("mobs_mc:guardian_elder", {
|
mobs:register_mob("mobs_mc:guardian_elder", {
|
||||||
type = "monster",
|
type = "monster",
|
||||||
hp_min = 80,
|
hp_min = 80,
|
||||||
hp_max = 80,
|
hp_max = 80,
|
||||||
|
breath_max = -1,
|
||||||
passive = false,
|
passive = false,
|
||||||
attack_type = "dogfight",
|
attack_type = "dogfight",
|
||||||
pathfinding = 1,
|
pathfinding = 1,
|
||||||
|
@ -39,10 +38,14 @@ mobs:register_mob("mobs_mc:guardian_elder", {
|
||||||
run_start = 0, run_end = 20,
|
run_start = 0, run_end = 20,
|
||||||
},
|
},
|
||||||
drops = {
|
drops = {
|
||||||
|
-- TODO: Reduce # of drops when ocean monument is ready.
|
||||||
|
|
||||||
|
-- Greatly increased amounts of prismarine
|
||||||
{name = mobs_mc.items.prismarine_shard,
|
{name = mobs_mc.items.prismarine_shard,
|
||||||
chance = 1,
|
chance = 1,
|
||||||
min = 0,
|
min = 1,
|
||||||
max = 2,},
|
max = 64,},
|
||||||
|
|
||||||
-- TODO: Only drop if killed by player
|
-- TODO: Only drop if killed by player
|
||||||
{name = mobs_mc.items.wet_sponge,
|
{name = mobs_mc.items.wet_sponge,
|
||||||
chance = 1,
|
chance = 1,
|
||||||
|
@ -56,9 +59,9 @@ mobs:register_mob("mobs_mc:guardian_elder", {
|
||||||
min = 1,
|
min = 1,
|
||||||
max = 1,},
|
max = 1,},
|
||||||
{name = mobs_mc.items.prismarine_crystals,
|
{name = mobs_mc.items.prismarine_crystals,
|
||||||
chance = 4,
|
chance = 1,
|
||||||
min = 1,
|
min = 1,
|
||||||
max = 1,},
|
max = 10,},
|
||||||
|
|
||||||
-- Rare drop: fish
|
-- Rare drop: fish
|
||||||
{name = mobs_mc.items.fish_raw,
|
{name = mobs_mc.items.fish_raw,
|
||||||
|
@ -82,11 +85,7 @@ mobs:register_mob("mobs_mc:guardian_elder", {
|
||||||
fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source },
|
fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source },
|
||||||
stepheight = 0.1,
|
stepheight = 0.1,
|
||||||
jump = false,
|
jump = false,
|
||||||
water_damage = 0,
|
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
view_range = 16,
|
view_range = 16,
|
||||||
blood_amount = 0,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
mobs:spawn_specific("mobs_mc:guardian_elder", mobs_mc.spawn.water, mobs_mc.spawn_water, 0, minetest.LIGHT_MAX+1, 30, 40000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.water-18)
|
mobs:spawn_specific("mobs_mc:guardian_elder", mobs_mc.spawn.water, mobs_mc.spawn_water, 0, minetest.LIGHT_MAX+1, 30, 40000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.water-18)
|
||||||
|
|
|
@ -3,9 +3,7 @@
|
||||||
--made for MC like Survival game
|
--made for MC like Survival game
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
--###################
|
--###################
|
||||||
--################### HORSE
|
--################### HORSE
|
||||||
|
@ -118,8 +116,6 @@ local horse = {
|
||||||
hp_min = 15,
|
hp_min = 15,
|
||||||
hp_max = 30,
|
hp_max = 30,
|
||||||
floats = 1,
|
floats = 1,
|
||||||
lava_damage = 4,
|
|
||||||
water_damage = 1,
|
|
||||||
makes_footstep_sound = true,
|
makes_footstep_sound = true,
|
||||||
jump = true,
|
jump = true,
|
||||||
jump_height = 5.75, -- can clear 2.5 blocks
|
jump_height = 5.75, -- can clear 2.5 blocks
|
||||||
|
@ -142,7 +138,7 @@ local horse = {
|
||||||
self.max_speed_reverse = 2
|
self.max_speed_reverse = 2
|
||||||
self.accel = 6
|
self.accel = 6
|
||||||
self.terrain_type = 3
|
self.terrain_type = 3
|
||||||
self.driver_attach_at = {x = 0, y = 7.5, z = -1.75}
|
self.driver_attach_at = {x = 0, y = 4.17, z = -1.75}
|
||||||
self.driver_eye_offset = {x = 0, y = 3, z = 0}
|
self.driver_eye_offset = {x = 0, y = 3, z = 0}
|
||||||
self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y}
|
self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y}
|
||||||
end
|
end
|
||||||
|
@ -188,14 +184,36 @@ local horse = {
|
||||||
end
|
end
|
||||||
|
|
||||||
local item = clicker:get_wielded_item()
|
local item = clicker:get_wielded_item()
|
||||||
if can_breed(self.name) and (item:get_name() == mobs_mc.items.golden_apple or item:get_name() == mobs_mc.items.golden_carrot) then
|
local iname = item:get_name()
|
||||||
|
local heal = 0
|
||||||
|
if can_breed(self.name) then
|
||||||
-- Breed horse with golden apple or golden carrot
|
-- Breed horse with golden apple or golden carrot
|
||||||
if mobs:feed_tame(self, clicker, 1, true, false) then return end
|
if (iname == mobs_mc.items.golden_apple) then
|
||||||
|
heal = 10
|
||||||
|
elseif (iname == mobs_mc.items.golden_carrot) then
|
||||||
|
heal = 4
|
||||||
|
end
|
||||||
|
if heal > 0 and mobs:feed_tame(self, clicker, heal, true, false) then
|
||||||
|
return
|
||||||
|
end
|
||||||
end
|
end
|
||||||
-- Feed/tame with anything else
|
-- Feed/tame with anything else
|
||||||
-- TODO: Different health bonus for feeding
|
if (iname == mobs_mc.items.sugar) then
|
||||||
if mobs:feed_tame(self, clicker, 1, false, true) then return end
|
heal = 1
|
||||||
if mobs:protect(self, clicker) then return end
|
elseif (iname == mobs_mc.items.wheat) then
|
||||||
|
heal = 2
|
||||||
|
elseif (iname == mobs_mc.items.apple) then
|
||||||
|
heal = 3
|
||||||
|
elseif (iname == mobs_mc.items.hay_bale) then
|
||||||
|
heal = 20
|
||||||
|
end
|
||||||
|
if heal > 0 and mobs:feed_tame(self, clicker, heal, false, true) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if mobs:protect(self, clicker) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
-- Make sure tamed horse is mature and being clicked by owner only
|
-- Make sure tamed horse is mature and being clicked by owner only
|
||||||
if self.tamed and not self.child and self.owner == clicker:get_player_name() then
|
if self.tamed and not self.child and self.owner == clicker:get_player_name() then
|
||||||
|
@ -209,7 +227,7 @@ local horse = {
|
||||||
|
|
||||||
-- Put on saddle if tamed
|
-- Put on saddle if tamed
|
||||||
elseif not self.driver and not self._saddle
|
elseif not self.driver and not self._saddle
|
||||||
and clicker:get_wielded_item():get_name() == mobs_mc.items.saddle then
|
and iname == mobs_mc.items.saddle then
|
||||||
|
|
||||||
-- Put on saddle and take saddle from player's inventory
|
-- Put on saddle and take saddle from player's inventory
|
||||||
local w = clicker:get_wielded_item()
|
local w = clicker:get_wielded_item()
|
||||||
|
@ -227,17 +245,18 @@ local horse = {
|
||||||
local tex = horse_extra_texture(self)
|
local tex = horse_extra_texture(self)
|
||||||
self.base_texture = tex
|
self.base_texture = tex
|
||||||
self.object:set_properties({textures = self.base_texture})
|
self.object:set_properties({textures = self.base_texture})
|
||||||
|
minetest.sound_play({name = "mcl_armor_equip_leather"}, {gain=0.5, max_hear_distance=12, pos=self.object:get_pos()})
|
||||||
|
|
||||||
-- Put on horse armor if tamed
|
-- Put on horse armor if tamed
|
||||||
elseif can_equip_horse_armor(self.name) and not self.driver and not self._horse_armor
|
elseif can_equip_horse_armor(self.name) and not self.driver and not self._horse_armor
|
||||||
and minetest.get_item_group(clicker:get_wielded_item():get_name(), "horse_armor") > 0 then
|
and minetest.get_item_group(iname, "horse_armor") > 0 then
|
||||||
|
|
||||||
|
|
||||||
-- Put on armor and take armor from player's inventory
|
-- Put on armor and take armor from player's inventory
|
||||||
local w = clicker:get_wielded_item()
|
local armor = minetest.get_item_group(iname, "horse_armor")
|
||||||
local armor = minetest.get_item_group(w:get_name(), "horse_armor")
|
self._horse_armor = iname
|
||||||
self._horse_armor = w:get_name()
|
|
||||||
if not minetest.settings:get_bool("creative_mode") then
|
if not minetest.settings:get_bool("creative_mode") then
|
||||||
|
local w = clicker:get_wielded_item()
|
||||||
w:take_item()
|
w:take_item()
|
||||||
clicker:set_wielded_item(w)
|
clicker:set_wielded_item(w)
|
||||||
end
|
end
|
||||||
|
@ -256,7 +275,10 @@ local horse = {
|
||||||
local tex = horse_extra_texture(self)
|
local tex = horse_extra_texture(self)
|
||||||
self.base_texture = tex
|
self.base_texture = tex
|
||||||
self.object:set_properties({textures = self.base_texture})
|
self.object:set_properties({textures = self.base_texture})
|
||||||
|
local def = w:get_definition()
|
||||||
|
if def.sounds and def.sounds._mcl_armor_equip then
|
||||||
|
minetest.sound_play({name = def.sounds._mcl_armor_equip}, {gain=0.5, max_hear_distance=12, pos=self.object:get_pos()})
|
||||||
|
end
|
||||||
|
|
||||||
-- Mount horse
|
-- Mount horse
|
||||||
elseif not self.driver and self._saddle then
|
elseif not self.driver and self._saddle then
|
||||||
|
@ -265,7 +287,7 @@ local horse = {
|
||||||
mobs.attach(self, clicker)
|
mobs.attach(self, clicker)
|
||||||
|
|
||||||
-- Used to capture horse
|
-- Used to capture horse
|
||||||
elseif not self.driver and clicker:get_wielded_item():get_name() ~= "" then
|
elseif not self.driver and iname ~= "" then
|
||||||
mobs:capture_mob(self, clicker, 0, 5, 60, false, nil)
|
mobs:capture_mob(self, clicker, 0, 5, 60, false, nil)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -326,6 +348,7 @@ mobs:register_mob("mobs_mc:horse", horse)
|
||||||
|
|
||||||
-- Skeleton horse
|
-- Skeleton horse
|
||||||
local skeleton_horse = table.copy(horse)
|
local skeleton_horse = table.copy(horse)
|
||||||
|
skeleton_horse.breath_max = -1
|
||||||
skeleton_horse.textures = {{"blank.png", "mobs_mc_horse_skeleton.png", "blank.png"}}
|
skeleton_horse.textures = {{"blank.png", "mobs_mc_horse_skeleton.png", "blank.png"}}
|
||||||
skeleton_horse.drops = {
|
skeleton_horse.drops = {
|
||||||
{name = mobs_mc.items.bone,
|
{name = mobs_mc.items.bone,
|
||||||
|
@ -339,11 +362,11 @@ skeleton_horse.sounds = {
|
||||||
damage = "mobs_mc_skeleton_hurt",
|
damage = "mobs_mc_skeleton_hurt",
|
||||||
distance = 16,
|
distance = 16,
|
||||||
}
|
}
|
||||||
skeleton_horse.blood_amount = 0
|
|
||||||
mobs:register_mob("mobs_mc:skeleton_horse", skeleton_horse)
|
mobs:register_mob("mobs_mc:skeleton_horse", skeleton_horse)
|
||||||
|
|
||||||
-- Zombie horse
|
-- Zombie horse
|
||||||
local zombie_horse = table.copy(horse)
|
local zombie_horse = table.copy(horse)
|
||||||
|
zombie_horse.breath_max = -1
|
||||||
zombie_horse.textures = {{"blank.png", "mobs_mc_horse_zombie.png", "blank.png"}}
|
zombie_horse.textures = {{"blank.png", "mobs_mc_horse_zombie.png", "blank.png"}}
|
||||||
zombie_horse.drops = {
|
zombie_horse.drops = {
|
||||||
{name = mobs_mc.items.rotten_flesh,
|
{name = mobs_mc.items.rotten_flesh,
|
||||||
|
@ -405,9 +428,6 @@ mobs:register_mob("mobs_mc:mule", mule)
|
||||||
mobs:spawn_specific("mobs_mc:horse", mobs_mc.spawn.grassland_savanna, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 15000, 12, mobs_mc.spawn_height.water+3, mobs_mc.spawn_height.overworld_max)
|
mobs:spawn_specific("mobs_mc:horse", mobs_mc.spawn.grassland_savanna, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 15000, 12, mobs_mc.spawn_height.water+3, mobs_mc.spawn_height.overworld_max)
|
||||||
mobs:spawn_specific("mobs_mc:donkey", mobs_mc.spawn.grassland_savanna, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 15000, 12, mobs_mc.spawn_height.water+3, mobs_mc.spawn_height.overworld_max)
|
mobs:spawn_specific("mobs_mc:donkey", mobs_mc.spawn.grassland_savanna, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 15000, 12, mobs_mc.spawn_height.water+3, mobs_mc.spawn_height.overworld_max)
|
||||||
|
|
||||||
-- compatibility
|
|
||||||
mobs:alias_mob("mobs:horse", "mobs_mc:horse")
|
|
||||||
|
|
||||||
-- spawn eggs
|
-- spawn eggs
|
||||||
mobs:register_egg("mobs_mc:horse", S("Horse"), "mobs_mc_spawn_icon_horse.png", 0)
|
mobs:register_egg("mobs_mc:horse", S("Horse"), "mobs_mc_spawn_icon_horse.png", 0)
|
||||||
mobs:register_egg("mobs_mc:skeleton_horse", S("Skeleton Horse"), "mobs_mc_spawn_icon_horse_skeleton.png", 0)
|
mobs:register_egg("mobs_mc:skeleton_horse", S("Skeleton Horse"), "mobs_mc_spawn_icon_horse_skeleton.png", 0)
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
|
|
||||||
-- Fallback functions for when `intllib` is not installed.
|
|
||||||
-- Code released under Unlicense <http://unlicense.org>.
|
|
||||||
|
|
||||||
-- Get the latest version of this file at:
|
|
||||||
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
|
|
||||||
|
|
||||||
local function format(str, ...)
|
|
||||||
local args = { ... }
|
|
||||||
local function repl(escape, open, num, close)
|
|
||||||
if escape == "" then
|
|
||||||
local replacement = tostring(args[tonumber(num)])
|
|
||||||
if open == "" then
|
|
||||||
replacement = replacement..close
|
|
||||||
end
|
|
||||||
return replacement
|
|
||||||
else
|
|
||||||
return "@"..open..num..close
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
|
|
||||||
end
|
|
||||||
|
|
||||||
local gettext, ngettext
|
|
||||||
if minetest.get_modpath("intllib") then
|
|
||||||
if intllib.make_gettext_pair then
|
|
||||||
-- New method using gettext.
|
|
||||||
gettext, ngettext = intllib.make_gettext_pair()
|
|
||||||
else
|
|
||||||
-- Old method using text files.
|
|
||||||
gettext = intllib.Getter()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Fill in missing functions.
|
|
||||||
|
|
||||||
gettext = gettext or function(msgid, ...)
|
|
||||||
return format(msgid, ...)
|
|
||||||
end
|
|
||||||
|
|
||||||
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
|
|
||||||
return format(n==1 and msgid or msgid_plural, ...)
|
|
||||||
end
|
|
||||||
|
|
||||||
return gettext, ngettext
|
|
|
@ -3,11 +3,8 @@
|
||||||
--made for MC like Survival game
|
--made for MC like Survival game
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
--dofile(minetest.get_modpath("mobs").."/api.lua")
|
|
||||||
--###################
|
--###################
|
||||||
--################### IRON GOLEM
|
--################### IRON GOLEM
|
||||||
--###################
|
--###################
|
||||||
|
@ -19,6 +16,7 @@ mobs:register_mob("mobs_mc:iron_golem", {
|
||||||
passive = true,
|
passive = true,
|
||||||
hp_min = 100,
|
hp_min = 100,
|
||||||
hp_max = 100,
|
hp_max = 100,
|
||||||
|
breath_max = -1,
|
||||||
collisionbox = {-0.7, -0.01, -0.7, 0.7, 2.69, 0.7},
|
collisionbox = {-0.7, -0.01, -0.7, 0.7, 2.69, 0.7},
|
||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_mc_iron_golem.b3d",
|
mesh = "mobs_mc_iron_golem.b3d",
|
||||||
|
@ -51,9 +49,6 @@ mobs:register_mob("mobs_mc:iron_golem", {
|
||||||
min = 0,
|
min = 0,
|
||||||
max = 2,},
|
max = 2,},
|
||||||
},
|
},
|
||||||
water_damage = 0,
|
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
fall_damage = 0,
|
fall_damage = 0,
|
||||||
animation = {
|
animation = {
|
||||||
stand_speed = 15, walk_speed = 15, run_speed = 25, punch_speed = 15,
|
stand_speed = 15, walk_speed = 15, run_speed = 25, punch_speed = 15,
|
||||||
|
@ -63,7 +58,6 @@ mobs:register_mob("mobs_mc:iron_golem", {
|
||||||
punch_start = 40, punch_end = 50,
|
punch_start = 40, punch_end = 50,
|
||||||
},
|
},
|
||||||
jump = true,
|
jump = true,
|
||||||
blood_amount = 0,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,29 @@
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
--###################
|
--###################
|
||||||
--################### LLAMA
|
--################### LLAMA
|
||||||
--###################
|
--###################
|
||||||
|
|
||||||
|
local carpets = {
|
||||||
|
-- group = { carpet , short_texture_name }
|
||||||
|
unicolor_white = { "mcl_wool:white_carpet", "white" },
|
||||||
|
unicolor_dark_orange = { "mcl_wool:brown_carpet", "brown" },
|
||||||
|
unicolor_grey = { "mcl_wool:silver_carpet", "light_gray" },
|
||||||
|
unicolor_darkgrey = { "mcl_wool:grey_carpet", "gray" },
|
||||||
|
unicolor_blue = { "mcl_wool:blue_carpet", "blue" },
|
||||||
|
unicolor_dark_green = { "mcl_wool:green_carpet", "green" },
|
||||||
|
unicolor_green = { "mcl_wool:lime_carpet", "lime" },
|
||||||
|
unicolor_violet = { "mcl_wool:purple_carpet", "purple" },
|
||||||
|
unicolor_light_red = { "mcl_wool:pink_carpet", "pink" },
|
||||||
|
unicolor_yellow = { "mcl_wool:yellow_carpet", "yellow" },
|
||||||
|
unicolor_orange = { "mcl_wool:orange_carpet", "orange" },
|
||||||
|
unicolor_red = { "mcl_wool:red_carpet", "red" },
|
||||||
|
unicolor_cyan = { "mcl_wool:cyan_carpet", "cyan" },
|
||||||
|
unicolor_red_violet = { "mcl_wool:magenta_carpet", "magenta" },
|
||||||
|
unicolor_black = { "mcl_wool:black_carpet", "black" },
|
||||||
|
unicolor_light_blue = { "mcl_wool:light_blue_carpet", "light_blue" },
|
||||||
|
}
|
||||||
|
|
||||||
mobs:register_mob("mobs_mc:llama", {
|
mobs:register_mob("mobs_mc:llama", {
|
||||||
type = "animal",
|
type = "animal",
|
||||||
hp_min = 15,
|
hp_min = 15,
|
||||||
|
@ -20,7 +38,7 @@ mobs:register_mob("mobs_mc:llama", {
|
||||||
{"blank.png", "blank.png", "mobs_mc_llama_gray.png"},
|
{"blank.png", "blank.png", "mobs_mc_llama_gray.png"},
|
||||||
{"blank.png", "blank.png", "mobs_mc_llama_white.png"},
|
{"blank.png", "blank.png", "mobs_mc_llama_white.png"},
|
||||||
{"blank.png", "blank.png", "mobs_mc_llama.png"},
|
{"blank.png", "blank.png", "mobs_mc_llama.png"},
|
||||||
-- TODO: Implement carpet (aka decor) on llama
|
-- TODO: Add llama carpet textures (Pixel Perfection seems to use verbatim copy from Minecraft :-( )
|
||||||
},
|
},
|
||||||
visual_size = {x=3, y=3},
|
visual_size = {x=3, y=3},
|
||||||
makes_footstep_sound = true,
|
makes_footstep_sound = true,
|
||||||
|
@ -34,9 +52,6 @@ mobs:register_mob("mobs_mc:llama", {
|
||||||
min = 0,
|
min = 0,
|
||||||
max = 2,},
|
max = 2,},
|
||||||
},
|
},
|
||||||
water_damage = 0,
|
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
fear_height = 4,
|
fear_height = 4,
|
||||||
sounds = {
|
sounds = {
|
||||||
random = "mobs_mc_llama",
|
random = "mobs_mc_llama",
|
||||||
|
@ -58,7 +73,7 @@ mobs:register_mob("mobs_mc:llama", {
|
||||||
look_start = 78,
|
look_start = 78,
|
||||||
look_end = 108,
|
look_end = 108,
|
||||||
},
|
},
|
||||||
follow = mobs_mc.items.horse,
|
follow = mobs_mc.follow.llama,
|
||||||
view_range = 16,
|
view_range = 16,
|
||||||
do_custom = function(self, dtime)
|
do_custom = function(self, dtime)
|
||||||
|
|
||||||
|
@ -69,7 +84,7 @@ mobs:register_mob("mobs_mc:llama", {
|
||||||
self.max_speed_reverse = 2
|
self.max_speed_reverse = 2
|
||||||
self.accel = 4
|
self.accel = 4
|
||||||
self.terrain_type = 3
|
self.terrain_type = 3
|
||||||
self.driver_attach_at = {x = 0, y = 7.5, z = -1.5}
|
self.driver_attach_at = {x = 0, y = 4.17, z = -1.5}
|
||||||
self.driver_eye_offset = {x = 0, y = 3, z = 0}
|
self.driver_eye_offset = {x = 0, y = 3, z = 0}
|
||||||
self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y}
|
self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y}
|
||||||
end
|
end
|
||||||
|
@ -114,7 +129,38 @@ mobs:register_mob("mobs_mc:llama", {
|
||||||
-- Make sure tamed llama is mature and being clicked by owner only
|
-- Make sure tamed llama is mature and being clicked by owner only
|
||||||
if self.tamed and not self.child and self.owner == clicker:get_player_name() then
|
if self.tamed and not self.child and self.owner == clicker:get_player_name() then
|
||||||
|
|
||||||
local inv = clicker:get_inventory()
|
-- Place carpet
|
||||||
|
--[[ TODO: Re-enable this code when carpet textures arrived.
|
||||||
|
if minetest.get_item_group(item:get_name(), "carpet") == 1 and not self.carpet then
|
||||||
|
for group, carpetdata in pairs(carpets) do
|
||||||
|
if minetest.get_item_group(item:get_name(), group) == 1 then
|
||||||
|
if not minetest.settings:get_bool("creative_mode") then
|
||||||
|
item:take_item()
|
||||||
|
clicker:set_wielded_item(item)
|
||||||
|
end
|
||||||
|
local substr = carpetdata[2]
|
||||||
|
local tex_carpet = "mobs_mc_llama_decor_"..substr..".png"
|
||||||
|
self.base_texture = table.copy(self.base_texture)
|
||||||
|
self.base_texture[2] = tex_carpet
|
||||||
|
self.object:set_properties({
|
||||||
|
textures = self.base_texture,
|
||||||
|
})
|
||||||
|
self.carpet = item:get_name()
|
||||||
|
self.drops = {
|
||||||
|
{name = mobs_mc.items.leather,
|
||||||
|
chance = 1,
|
||||||
|
min = 0,
|
||||||
|
max = 2,},
|
||||||
|
{name = item:get_name(),
|
||||||
|
chance = 1,
|
||||||
|
min = 1,
|
||||||
|
max = 1,},
|
||||||
|
}
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
]]
|
||||||
|
|
||||||
-- detatch player already riding llama
|
-- detatch player already riding llama
|
||||||
if self.driver and clicker == self.driver then
|
if self.driver and clicker == self.driver then
|
||||||
|
@ -132,7 +178,32 @@ mobs:register_mob("mobs_mc:llama", {
|
||||||
elseif not self.driver and clicker:get_wielded_item():get_name() ~= "" then
|
elseif not self.driver and clicker:get_wielded_item():get_name() ~= "" then
|
||||||
mobs:capture_mob(self, clicker, 0, 5, 60, false, nil)
|
mobs:capture_mob(self, clicker, 0, 5, 60, false, nil)
|
||||||
end
|
end
|
||||||
|
end,
|
||||||
|
|
||||||
|
--[[
|
||||||
|
TODO: Enable this code when carpet textures arrived.
|
||||||
|
on_breed = function(parent1, parent2)
|
||||||
|
-- When breeding, make sure the child has no carpet
|
||||||
|
local pos = parent1.object:get_pos()
|
||||||
|
local child, parent
|
||||||
|
if math.random(1,2) == 1 then
|
||||||
|
parent = parent1
|
||||||
|
else
|
||||||
|
parent = parent2
|
||||||
end
|
end
|
||||||
|
child = mobs:spawn_child(pos, parent.name)
|
||||||
|
if child then
|
||||||
|
local ent_c = child:get_luaentity()
|
||||||
|
ent_c.base_texture = table.copy(ent_c.base_texture)
|
||||||
|
ent_c.base_texture[2] = "blank.png"
|
||||||
|
child:set_properties({textures = ent_c.base_texture})
|
||||||
|
ent_c.tamed = true
|
||||||
|
ent_c.carpet = nil
|
||||||
|
ent_c.owner = parent.owner
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
]]
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -1,742 +0,0 @@
|
||||||
# SOME DESCRIPTIVE TITLE.
|
|
||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: \n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2018-01-25 18:45+0100\n"
|
|
||||||
"PO-Revision-Date: 2018-01-25 18:48+0100\n"
|
|
||||||
"Last-Translator: Wuzzy <almikes@aol.com>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"Language: de_DE\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"X-Generator: Poedit 2.0.5\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Blaze Rod"
|
|
||||||
msgstr "Lohenrute"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "This is a crafting component dropped from dead blazes."
|
|
||||||
msgstr "Dies ist eine Fertigungskomponente, welche von toten Lohen abfällt."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Blaze Powder"
|
|
||||||
msgstr "Lohenstaub"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "This item is mainly used for brewing potions and crafting."
|
|
||||||
msgstr ""
|
|
||||||
"Dieser Gegenstand wird hauptsächlich für die Trankzubereitung und die "
|
|
||||||
"Fertigung benutzt."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Raw Chicken"
|
|
||||||
msgstr "Rohes Hühnchen"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Raw chicken is a food item and can be eaten safely. Cooking it will increase "
|
|
||||||
"its nutritional value."
|
|
||||||
msgstr ""
|
|
||||||
"Rohes Hühnchen ist ein Lebensmittel und kann problemlos gegessen werden. Es "
|
|
||||||
"kann gegart werden, um den Nährwert zu erhöhen."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Cooked Chicken"
|
|
||||||
msgstr "Gebratenes Hühnchen"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "A cooked chicken is a healthy food item which can be eaten."
|
|
||||||
msgstr "Ein gekochtes Hühnchen ist ein gesundes essbares Lebensmittel."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Feather"
|
|
||||||
msgstr "Feder"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Feathers are used in crafting and are dropped from chickens."
|
|
||||||
msgstr ""
|
|
||||||
"Federn werden für die Fertigung benutzt und werden von Hühnern fallen "
|
|
||||||
"gelassen."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Raw Beef"
|
|
||||||
msgstr "Rohes Rindfleisch"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Raw beef is the flesh from cows and can be eaten safely. Cooking it will "
|
|
||||||
"greatly increase its nutritional value."
|
|
||||||
msgstr ""
|
|
||||||
"Rohes Rindfleisch ist das Fleisch von Kühen und kann problemlos gegessen "
|
|
||||||
"werden. Es kann gegart werden, um den Nährwert deutlich zu erhöhen."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Steak"
|
|
||||||
msgstr "Steak"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Steak is cooked beef from cows and can be eaten."
|
|
||||||
msgstr "Steak ist gebratenes Rindfleisch und kann gegessen werden."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Milk"
|
|
||||||
msgstr "Milch"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Milk is a food item obtained by using a bucket on a cow."
|
|
||||||
msgstr ""
|
|
||||||
"Milch ist ein Lebensmittel, das man erhält, wenn man einen Eimer an einer "
|
|
||||||
"Kuh benutzt."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Bowl"
|
|
||||||
msgstr "Schale"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Bowls are mainly used to hold tasty soups."
|
|
||||||
msgstr "Schüsseln werden benutzt, um leckere Suppen zu transportieren."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Mushroom Stew"
|
|
||||||
msgstr "Pilzsuppe"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Mushroom stew is a healthy soup."
|
|
||||||
msgstr "Pilzsuppe ist ein leckeres Gericht."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Dragon Egg"
|
|
||||||
msgstr "Drachenei"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Eye of Ender"
|
|
||||||
msgstr "Enderauge"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Ghast Tear"
|
|
||||||
msgstr "Ghastträne"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"A ghast tear is an item used in potion brewing. It is dropped from dead "
|
|
||||||
"ghasts."
|
|
||||||
msgstr ""
|
|
||||||
"Eine Ghastträne kann für die Trankzubereitung benutzt werden. Sie wird von "
|
|
||||||
"toten Ghasts abgeworfen."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Saddle"
|
|
||||||
msgstr "Sattel"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Saddles can be put on horses, donkeys, mules and pigs in order to mount them."
|
|
||||||
msgstr ""
|
|
||||||
"Sattel können auf Pferden, Eseln, Maultieren und Schweinen platziert werden, "
|
|
||||||
"um sich aufzusatteln."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Rightclick an animal while holding a saddle to put on the saddle. You can "
|
|
||||||
"now mount the animal by rightclicking it again."
|
|
||||||
msgstr ""
|
|
||||||
"Rechtsklick auf ein Tier mit einem Sattel in der Hand, um den Sattel zu "
|
|
||||||
"platzieren. Sie können sich nun mit Rechtsklick auf das Tier setzen."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Rightclick a horse to put on the horse armor. Donkeys and mules can't wear "
|
|
||||||
"horse armor."
|
|
||||||
msgstr ""
|
|
||||||
"Rechts auf ein Pferd klicken, um die Pferderüstung zu benutzen. Das "
|
|
||||||
"funktioniert nicht mit Eseln und Maultieren."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Iron Horse Armor"
|
|
||||||
msgstr "Eiserne Pferderüstung"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Iron horse armor can be worn by horses to increase their protection from "
|
|
||||||
"harm a bit."
|
|
||||||
msgstr ""
|
|
||||||
"Die Eisenpferderüstung kann von Pferden getragen werden, um sie etwas vor "
|
|
||||||
"Schaden zu schützen."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Golden Horse Armor"
|
|
||||||
msgstr "Goldene Pferderüstung"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Golden horse armor can be worn by horses to increase their protection from "
|
|
||||||
"harm."
|
|
||||||
msgstr ""
|
|
||||||
"Die Goldpferderüstung kann von Pferden getragen werden, um sie vor Schaden "
|
|
||||||
"zu schützen."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Diamond Horse Armor"
|
|
||||||
msgstr "Diamantene Pferderüstung"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Diamond horse armor can be worn by horses to greatly increase their "
|
|
||||||
"protection from harm."
|
|
||||||
msgstr ""
|
|
||||||
"Die Diamantpferderüstung kann von Pferden getragen werden, um ihre "
|
|
||||||
"Schadenstoleranz stark zu erhöhen."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Raw Porkchop"
|
|
||||||
msgstr "Rohes Schweinefleisch"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it "
|
|
||||||
"will greatly increase its nutritional value."
|
|
||||||
msgstr ""
|
|
||||||
"Ein rohes Stück Schweinefleisch kann bedenkenlos gegessen werden. Man kann "
|
|
||||||
"es braten, um seinen Nährwert stark zu erhöhen."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Cooked Porkchop"
|
|
||||||
msgstr "Gebratenes Schweinefleisch"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Carrot on a Stick"
|
|
||||||
msgstr "Karottenrute"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"A carrot on a stick can be used on saddled pigs to ride them. Pigs will also "
|
|
||||||
"follow anyone who holds a carrot on a stick near them."
|
|
||||||
msgstr ""
|
|
||||||
"Eine Karottenrute kann auf gesattelten Schweinen angewendet werden, um sie "
|
|
||||||
"zu reiten. Schweine folgen auch jeden, der eine Karottenrüte trägt."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Rightclick a saddled pig with the carrot on a stick to mount it. You can now "
|
|
||||||
"ride it like a horse."
|
|
||||||
msgstr ""
|
|
||||||
"Rechts auf ein gesatteltes Schwein klicken, um sich draufzusetzen. Jetzt "
|
|
||||||
"kann das Schwein wie ein Pferd geritten werden."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Raw Rabbit"
|
|
||||||
msgstr "Rohes Kaninchen"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Raw rabbit is a food item from a dead rabbit. It can be eaten safely. "
|
|
||||||
"Cooking it will increase its nutritional value."
|
|
||||||
msgstr ""
|
|
||||||
"Rohes Kaninchenfleisch ist ein Lebensmittel, welches bedenkenlos verzehrt "
|
|
||||||
"werden kann. Es kann gebraten werden, um seinen Nährwert zu erhöhen."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Cooked Rabbit"
|
|
||||||
msgstr "Gebratenes Kaninchen"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "This is a food item which can be eaten."
|
|
||||||
msgstr "Dies ist ein Lebensmittel."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Rabbit Hide"
|
|
||||||
msgstr "Kaninchenfell"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Rabbit hide is used to create leather."
|
|
||||||
msgstr "Aus Kaninchenfellen wird Leder gefertigt."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Rabbit's Foot"
|
|
||||||
msgstr "Hasenpfote"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "This item is used in brewing."
|
|
||||||
msgstr "Dieser Gegenstand wird zum Brauen benutzt."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Raw Mutton"
|
|
||||||
msgstr "Rohes Hammelfleisch"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it "
|
|
||||||
"will greatly increase its nutritional value."
|
|
||||||
msgstr ""
|
|
||||||
"Rohes Hammelfleisch ist das Fleisch eines Schafes und ein Lebensmittel, "
|
|
||||||
"welches bedenkenlos verzehrt werden kann. Es kann gebraten werden, um seinen "
|
|
||||||
"Nährwert deutlich zu erhöhen."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Cooked Mutton"
|
|
||||||
msgstr "Gebratenes Hammelfleisch"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Cooked mutton is the cooked flesh from a sheep and is used as food."
|
|
||||||
msgstr ""
|
|
||||||
"Gebratenes Hammelfleisch ist das gebratene Fleisch eines Schafs und dient "
|
|
||||||
"als Lebensmittel."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Shulker Shell"
|
|
||||||
msgstr "Shulkerschale"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Shulker shells are used in crafting. They are dropped from dead shulkers."
|
|
||||||
msgstr ""
|
|
||||||
"Shulkerschalen werden für die Fertigung verwendet. Sie werden von toten "
|
|
||||||
"Shulkern fallen gelassen."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Magma Cream"
|
|
||||||
msgstr "Magmacreme"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Magma cream is a crafting component."
|
|
||||||
msgstr "Magmacreme wird zum Fertigen benutzt."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Slimeball"
|
|
||||||
msgstr "Schleimkugel"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Slimeballs are used in crafting. They are dropped from slimes."
|
|
||||||
msgstr ""
|
|
||||||
"Schleimkugeln werden in der Fertigung benutzt. Sie werden von Schleimen "
|
|
||||||
"fallen gelassen."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Spider Eye"
|
|
||||||
msgstr "Spinnenauge"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Spider eyes are used mainly in crafting and brewing. Spider eyes can be "
|
|
||||||
"eaten, but they poison you and reduce your health by 2 hit points."
|
|
||||||
msgstr ""
|
|
||||||
"Spinnenaugen werden hauptsächlich für die Fertigung und die Trankzubereitung "
|
|
||||||
"benutzt. Spinnenaugen können gegessen werden, aber sie vergiften Sie und Sie "
|
|
||||||
"verlieren 2 Trefferpunkte."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Totem of Undying"
|
|
||||||
msgstr "Totem der Unsterblichkeit"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"A totem of undying is a rare artifact which may safe you from certain death."
|
|
||||||
msgstr ""
|
|
||||||
"Ein Totem der Unsterblichkeit ist ein seltenes Artefakt, welches Sie vor dem "
|
|
||||||
"sicheren Tod bewahren kann."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"The totem only works while you hold it in your hand. If you receive fatal "
|
|
||||||
"damage, you are saved from death and you get a second chance with 1 HP. The "
|
|
||||||
"totem is destroyed in the process, however."
|
|
||||||
msgstr ""
|
|
||||||
"Der Totem funktioniert nur, während Sie ihn in der Hand halten. Wenn sie "
|
|
||||||
"tödlichen Schaden erhalten, werden Sie vom Tod bewahrt und erhalten eine "
|
|
||||||
"zweite Lebenschance mit 1 HP. Der Totem geht dabei jedoch zu Bruch."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Rotten Flesh"
|
|
||||||
msgstr "Verrottetes Fleisch"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Yuck! This piece of flesh clearly has seen better days. Eating it will only "
|
|
||||||
"poison you and reduces your health by 4 hit points. But tamed wolves can eat "
|
|
||||||
"it just fine."
|
|
||||||
msgstr ""
|
|
||||||
"Igitt! Dieses Stück Fleisch hat wohl bessere Tage gesehen. Wenn Sie es "
|
|
||||||
"essen, werden Sie sofort vergiftet und erleiden einen Schaden von 4 "
|
|
||||||
"Trefferpunkten. Aber gezähmte Wölfe können es problemlos fressen."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Nether Star"
|
|
||||||
msgstr "Netherstern"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "A nether star is a crafting component. It is dropped from the Wither."
|
|
||||||
msgstr ""
|
|
||||||
"Ein Netherstern ist eine Fertigungskomponente. Er wird vom Wither abgeworfen."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Bone"
|
|
||||||
msgstr "Knochen"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Bones can be used to tame wolves so they will protect you. They are also "
|
|
||||||
"useful as a crafting ingredient."
|
|
||||||
msgstr ""
|
|
||||||
"Knochen können benutzt werden, um Wölfe zu zähmen, damit sie einen "
|
|
||||||
"beschützen. Sie außerdem nützlich in der Fertigung."
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Hold the bone in your hand near wolves to attract them. Rightclick the wolf "
|
|
||||||
"to give it a bone and tame it."
|
|
||||||
msgstr ""
|
|
||||||
"Halten Sie einen Knochen in der Nähe eines Wolfes, um ihn anzulocken. "
|
|
||||||
"Rechtsklick auf den Wolf, um ihn den Knochen zu geben un zu zähmen."
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid "Arrow"
|
|
||||||
msgstr "Pfeil"
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid "Arrows are ammunition for bows."
|
|
||||||
msgstr "Pfeile sind Munition für Bögen."
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid ""
|
|
||||||
"To use arrows as ammunition for a bow, put them in the inventory slot "
|
|
||||||
"following the bow. Slots are counted left to right, top to bottom."
|
|
||||||
msgstr ""
|
|
||||||
"Um Pfeile als Munition für einen Bogen zu benutzen, legen Sie sie in das "
|
|
||||||
"Inventarfeld, das dem des Bogens folgt. Inventarfelder werden von links nach "
|
|
||||||
"rechts, dann von oben nach unten gezählt."
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid "Bow"
|
|
||||||
msgstr "Bogen"
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid "Bows are ranged weapons to shoot arrows at your foes."
|
|
||||||
msgstr "Bögen sind Fernwaffen, um Pfeile auf Ihre Gegner zu schießen."
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid ""
|
|
||||||
"To use the bow, you first need to have at least one arrow in slot following "
|
|
||||||
"the bow. Leftclick to shoot. Each hit deals 3 damage."
|
|
||||||
msgstr ""
|
|
||||||
"Um den Bogen zu benutzen, brauchen Sie zuerest mindestens einen Pfeil in dem "
|
|
||||||
"Inventarfeld nach dem des Bogens. Linksklick zum Schießen. Jeder Treffer "
|
|
||||||
"richtet 3 Schaden an."
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid "Egg"
|
|
||||||
msgstr "Ei"
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid ""
|
|
||||||
"Eggs can be thrown and break on impact. There is a small chance that 1 or "
|
|
||||||
"even 4 chicks will pop out"
|
|
||||||
msgstr ""
|
|
||||||
"Eier können geworfen werden und zerbrechen bei einem Treffer. Es gibt eine "
|
|
||||||
"kleine Chance, dass 1 oder sogar 4 Küken auftauchen"
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid "Snowball"
|
|
||||||
msgstr "Schneeball"
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid ""
|
|
||||||
"Snowballs can be thrown at your enemies. A snowball deals 3 damage to "
|
|
||||||
"blazes, but is harmless to anything else."
|
|
||||||
msgstr ""
|
|
||||||
"Werfen Sie Schnebälle auf Ihre Feinde. Ein Schneeball richtet gegenüber "
|
|
||||||
"Lohen 3 Schaden an, ist aber harmlos für alles andere."
|
|
||||||
|
|
||||||
#: 4_heads.lua
|
|
||||||
msgid "Zombie Head"
|
|
||||||
msgstr "Zombiekopf"
|
|
||||||
|
|
||||||
#: 4_heads.lua
|
|
||||||
msgid ""
|
|
||||||
"A zombie head is a small decorative block which resembles the head of a "
|
|
||||||
"zombie."
|
|
||||||
msgstr ""
|
|
||||||
"Ein Zombiekopf ist ein kleiner dekorativer Block, der wie der Kopf eines "
|
|
||||||
"Zombies aussieht."
|
|
||||||
|
|
||||||
#: 4_heads.lua
|
|
||||||
msgid "Creeper Head"
|
|
||||||
msgstr "Creeperkopf"
|
|
||||||
|
|
||||||
#: 4_heads.lua
|
|
||||||
msgid ""
|
|
||||||
"A creeper head is a small decorative block which resembles the head of a "
|
|
||||||
"creeper."
|
|
||||||
msgstr ""
|
|
||||||
"Ein Creeperkopf ist ein kleiner dekorativer Block, der wie der Kopf eines "
|
|
||||||
"Creeper aussieht."
|
|
||||||
|
|
||||||
#: 4_heads.lua
|
|
||||||
msgid "Skeleton Skull"
|
|
||||||
msgstr "Skelettschädel"
|
|
||||||
|
|
||||||
#: 4_heads.lua
|
|
||||||
msgid ""
|
|
||||||
"A skeleton skull is a small decorative block which resembles the skull of a "
|
|
||||||
"skeleton."
|
|
||||||
msgstr ""
|
|
||||||
"Ein Skelettschädel ist ein kleiner dekorativer Block, der wie der Schädel "
|
|
||||||
"eines Skeletts aussieht."
|
|
||||||
|
|
||||||
#: 4_heads.lua
|
|
||||||
msgid "Wither Skeleton Skull"
|
|
||||||
msgstr "Witherskelettschädel"
|
|
||||||
|
|
||||||
#: 4_heads.lua
|
|
||||||
msgid ""
|
|
||||||
"A wither skeleton skull is a small decorative block which resembles the "
|
|
||||||
"skull of a wither skeleton."
|
|
||||||
msgstr ""
|
|
||||||
"Ein Witherskelettschädel ist ein kleiner dekorativer Block, der wie der "
|
|
||||||
"Schädel eines Witherskeletts aussieht."
|
|
||||||
|
|
||||||
#: agent.lua
|
|
||||||
msgid "Agent"
|
|
||||||
msgstr "Agent"
|
|
||||||
|
|
||||||
#: bat.lua
|
|
||||||
msgid "Bat"
|
|
||||||
msgstr "Fledermaus"
|
|
||||||
|
|
||||||
#: blaze.lua
|
|
||||||
msgid "Blaze"
|
|
||||||
msgstr "Lohe"
|
|
||||||
|
|
||||||
#: chicken.lua
|
|
||||||
msgid "Chicken"
|
|
||||||
msgstr "Huhn"
|
|
||||||
|
|
||||||
#: cow+mooshroom.lua
|
|
||||||
msgid "Cow"
|
|
||||||
msgstr "Kuh"
|
|
||||||
|
|
||||||
#: cow+mooshroom.lua
|
|
||||||
msgid "Mooshroom"
|
|
||||||
msgstr "Mooshroom"
|
|
||||||
|
|
||||||
#: creeper.lua
|
|
||||||
msgid "Creeper"
|
|
||||||
msgstr "Creeper"
|
|
||||||
|
|
||||||
#: ender_dragon.lua
|
|
||||||
msgid "Ender Dragon"
|
|
||||||
msgstr "Enderdrache"
|
|
||||||
|
|
||||||
#: enderman.lua
|
|
||||||
msgid "Enderman"
|
|
||||||
msgstr "Enderman"
|
|
||||||
|
|
||||||
#: endermite.lua
|
|
||||||
msgid "Endermite"
|
|
||||||
msgstr "Endermite"
|
|
||||||
|
|
||||||
#: ghast.lua
|
|
||||||
msgid "Ghast"
|
|
||||||
msgstr "Ghast"
|
|
||||||
|
|
||||||
#: guardian_elder.lua
|
|
||||||
msgid "Elder Guardian"
|
|
||||||
msgstr "Großer Wächter"
|
|
||||||
|
|
||||||
#: guardian.lua
|
|
||||||
msgid "Guardian"
|
|
||||||
msgstr "Wächter"
|
|
||||||
|
|
||||||
#: horse.lua
|
|
||||||
msgid "Horse"
|
|
||||||
msgstr "Pferd"
|
|
||||||
|
|
||||||
#: horse.lua
|
|
||||||
msgid "Skeleton Horse"
|
|
||||||
msgstr "Skelettpferd"
|
|
||||||
|
|
||||||
#: horse.lua
|
|
||||||
msgid "Zombie Horse"
|
|
||||||
msgstr "Zombiepferd"
|
|
||||||
|
|
||||||
#: horse.lua
|
|
||||||
msgid "Donkey"
|
|
||||||
msgstr "Esel"
|
|
||||||
|
|
||||||
#: horse.lua
|
|
||||||
msgid "Mule"
|
|
||||||
msgstr "Maultier"
|
|
||||||
|
|
||||||
#: iron_golem.lua
|
|
||||||
msgid "Iron Golem"
|
|
||||||
msgstr "Eisengolem"
|
|
||||||
|
|
||||||
#: llama.lua
|
|
||||||
msgid "Llama"
|
|
||||||
msgstr "Lama"
|
|
||||||
|
|
||||||
#: ocelot.lua
|
|
||||||
msgid "Ocelot"
|
|
||||||
msgstr "Ozelot"
|
|
||||||
|
|
||||||
#: parrot.lua
|
|
||||||
msgid "Parrot"
|
|
||||||
msgstr "Papagei"
|
|
||||||
|
|
||||||
#: pig.lua
|
|
||||||
msgid "Pig"
|
|
||||||
msgstr "Schwein"
|
|
||||||
|
|
||||||
#: polar_bear.lua
|
|
||||||
msgid "Polar Bear"
|
|
||||||
msgstr "Eisbär"
|
|
||||||
|
|
||||||
#: rabbit.lua
|
|
||||||
msgid "Rabbit"
|
|
||||||
msgstr "Kaninchen"
|
|
||||||
|
|
||||||
#: rabbit.lua
|
|
||||||
msgid "Killer Bunny"
|
|
||||||
msgstr "Killer-Kaninchen"
|
|
||||||
|
|
||||||
#: sheep.lua
|
|
||||||
msgid "Sheep"
|
|
||||||
msgstr "Schaf"
|
|
||||||
|
|
||||||
#: shulker.lua
|
|
||||||
msgid "Shulker"
|
|
||||||
msgstr "Shulker"
|
|
||||||
|
|
||||||
#: silverfish.lua
|
|
||||||
msgid "Silverfish"
|
|
||||||
msgstr "Silberfischchen"
|
|
||||||
|
|
||||||
#: silverfish.lua
|
|
||||||
msgid "Stone Monster Egg"
|
|
||||||
msgstr "Silberfischchen-Stein"
|
|
||||||
|
|
||||||
#: silverfish.lua
|
|
||||||
msgid "Cobblestone Monster Egg"
|
|
||||||
msgstr "Silberfischchen-Bruchstein"
|
|
||||||
|
|
||||||
#: silverfish.lua
|
|
||||||
msgid "Mossy Cobblestone Monster Egg"
|
|
||||||
msgstr "Bemooster Silberfischchen-Bruchstein"
|
|
||||||
|
|
||||||
#: silverfish.lua
|
|
||||||
msgid "Stone Brick Monster Egg"
|
|
||||||
msgstr "Silberfischchen-Steinziegel"
|
|
||||||
|
|
||||||
#: silverfish.lua
|
|
||||||
msgid "Stone Block Monster Egg"
|
|
||||||
msgstr "Silberfischchen-Steinblock"
|
|
||||||
|
|
||||||
#: skeleton+stray.lua
|
|
||||||
msgid "Skeleton"
|
|
||||||
msgstr "Skelett"
|
|
||||||
|
|
||||||
#: skeleton+stray.lua
|
|
||||||
msgid "Stray"
|
|
||||||
msgstr "Eiswanderer"
|
|
||||||
|
|
||||||
#: skeleton_wither.lua
|
|
||||||
msgid "Wither Skeleton"
|
|
||||||
msgstr "Witherskelett"
|
|
||||||
|
|
||||||
#: slime+magma_cube.lua
|
|
||||||
msgid "Magma Cube"
|
|
||||||
msgstr "Magmawürfel"
|
|
||||||
|
|
||||||
#: slime+magma_cube.lua
|
|
||||||
msgid "Slime"
|
|
||||||
msgstr "Schleim"
|
|
||||||
|
|
||||||
#: snowman.lua
|
|
||||||
msgid "Snow Golem"
|
|
||||||
msgstr "Schneegolem"
|
|
||||||
|
|
||||||
#: spider.lua
|
|
||||||
msgid "Spider"
|
|
||||||
msgstr "Spinne"
|
|
||||||
|
|
||||||
#: spider.lua
|
|
||||||
msgid "Cave Spider"
|
|
||||||
msgstr "Höhlenspinne"
|
|
||||||
|
|
||||||
#: squid.lua
|
|
||||||
msgid "Squid"
|
|
||||||
msgstr "Tintenfisch"
|
|
||||||
|
|
||||||
#: vex.lua
|
|
||||||
msgid "Vex"
|
|
||||||
msgstr "Plagegeist"
|
|
||||||
|
|
||||||
#: villager_evoker.lua
|
|
||||||
msgid "Evoker"
|
|
||||||
msgstr "Magier"
|
|
||||||
|
|
||||||
#: villager_illusioner.lua
|
|
||||||
msgid "Illusioner"
|
|
||||||
msgstr "Illusionist"
|
|
||||||
|
|
||||||
#: villager.lua
|
|
||||||
msgid "Villager"
|
|
||||||
msgstr "Dorfbewohner"
|
|
||||||
|
|
||||||
#: villager_vindicator.lua
|
|
||||||
msgid "Vindicator"
|
|
||||||
msgstr "Diener"
|
|
||||||
|
|
||||||
#: villager_zombie.lua
|
|
||||||
msgid "Zombie Villager"
|
|
||||||
msgstr "Dorfbewohnerzombie"
|
|
||||||
|
|
||||||
#: witch.lua
|
|
||||||
msgid "Witch"
|
|
||||||
msgstr "Hexe"
|
|
||||||
|
|
||||||
#: wither.lua
|
|
||||||
msgid "Wither"
|
|
||||||
msgstr "Wither"
|
|
||||||
|
|
||||||
#: wolf.lua
|
|
||||||
msgid "Wolf"
|
|
||||||
msgstr "Wolf"
|
|
||||||
|
|
||||||
#: zombie.lua
|
|
||||||
msgid "Husk"
|
|
||||||
msgstr "Wüstenzombie"
|
|
||||||
|
|
||||||
#: zombie.lua
|
|
||||||
msgid "Zombie"
|
|
||||||
msgstr "Zombie"
|
|
||||||
|
|
||||||
#: zombiepig.lua
|
|
||||||
msgid "Zombie Pigman"
|
|
||||||
msgstr "Schweinezombie"
|
|
||||||
|
|
||||||
#~ msgid ""
|
|
||||||
#~ "Hold it in your hand and punch once to instantly get back to full health. "
|
|
||||||
#~ "The totem gets destroyed in the process."
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "Halten Sie es in der Hand und schlagen Sie zu, um sofort auf die volle "
|
|
||||||
#~ "Gesundheit zu kommen. Das zerstört das Totem."
|
|
||||||
|
|
||||||
#~ msgid "Enderman Head (WIP)"
|
|
||||||
#~ msgstr "Endermankopf (unfertig)"
|
|
||||||
|
|
||||||
#~ msgid "Ghast Head (WIP)"
|
|
||||||
#~ msgstr "Ghastkopf (unfertig)"
|
|
||||||
|
|
||||||
#~ msgid "Spider Head (WIP)"
|
|
||||||
#~ msgstr "Spinnenkopf (unfertig)"
|
|
||||||
|
|
||||||
#~ msgid "Zombie Pigman Head (WIP)"
|
|
||||||
#~ msgstr "Schweinezombiekopf (unfertig)"
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
# textdomain: mobs_mc
|
||||||
|
Totem of Undying=Totem der Unsterblichkeit
|
||||||
|
A totem of undying is a rare artifact which may safe you from certain death.=Ein Totem der Unsterblichkeit ist ein seltenes Artefakt, dass Sie vor dem sicheren Tod bewahren kann.
|
||||||
|
The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=Der Totem funktioniert nur, während Sie ihn halten. Wenn Sie normalerweise tödlich hohen Schaden erhalten, werden Sie vor dem Tod bewahrt und Sie erhalten eine zweite Chance mit 1 TP. Der Totem wird dabei zerstört.
|
||||||
|
Agent=Akteur
|
||||||
|
Bat=Fledermaus
|
||||||
|
Blaze=Lohe
|
||||||
|
Chicken=Huhn
|
||||||
|
Cow=Kuh
|
||||||
|
Mooshroom=Pilzkuh
|
||||||
|
Creeper=Creeper
|
||||||
|
Ender Dragon=Enderdrache
|
||||||
|
Enderman=Enderman
|
||||||
|
Endermite=Endermilbe
|
||||||
|
Ghast=Ghast
|
||||||
|
Elder Guardian=Großer Wächter
|
||||||
|
Guardian=Wächter
|
||||||
|
Horse=Pferd
|
||||||
|
Skeleton Horse=Skelettpferd
|
||||||
|
Zombie Horse=Zombiepferd
|
||||||
|
Donkey=Esel
|
||||||
|
Mule=Maultier
|
||||||
|
Iron Golem=Eisengolem
|
||||||
|
Llama=Lama
|
||||||
|
Ocelot=Ozelot
|
||||||
|
Parrot=Papagei
|
||||||
|
Pig=Schwein
|
||||||
|
Polar Bear=Eisbär
|
||||||
|
Rabbit=Kaninchen
|
||||||
|
Killer Bunny=Killerkaninchen
|
||||||
|
Sheep=Schaf
|
||||||
|
Shulker=Shulker
|
||||||
|
Silverfish=Silberfischchen
|
||||||
|
Skeleton=Skelett
|
||||||
|
Stray=Eiswanderer
|
||||||
|
Wither Skeleton=Witherskelett
|
||||||
|
Magma Cube=Magmakubus
|
||||||
|
Slime=Schleim
|
||||||
|
Snow Golem=Schneegolem
|
||||||
|
Spider=Spinne
|
||||||
|
Cave Spider=Höhlenspinne
|
||||||
|
Squid=Tintenfisch
|
||||||
|
Vex=Plagegeist
|
||||||
|
Evoker=Magier
|
||||||
|
Illusioner=Illusionist
|
||||||
|
Villager=Dorfbewohner
|
||||||
|
Vindicator=Diener
|
||||||
|
Zombie Villager=Dorfbewohnerzombie
|
||||||
|
Witch=Hexe
|
||||||
|
Wither=Wither
|
||||||
|
Wolf=Wolf
|
||||||
|
Husk=Wüstenzombie
|
||||||
|
Zombie=Zombie
|
||||||
|
Zombie Pigman=Schweinezombie
|
||||||
|
Iron Horse Armor=Eisenpferderüstung
|
||||||
|
Iron horse armor can be worn by horses to increase their protection from harm a bit.=Eine Eisenpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden etwas zu erhöhen.
|
||||||
|
Golden Horse Armor=Goldpferderüstung
|
||||||
|
Golden horse armor can be worn by horses to increase their protection from harm.=Eine Goldpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden zu erhöhen.
|
||||||
|
Diamond Horse Armor=Diamantpferderüstung
|
||||||
|
Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Eine Diamantpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden beträchtlich zu erhöhen.
|
||||||
|
Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=Platzieren Sie es auf einem Pferd, um die Pferderüstung aufzusetzen. Esel und Maultiere können keine Pferderüstung tragen.
|
||||||
|
Farmer=Bauer
|
||||||
|
Fisherman=Fischer
|
||||||
|
Fletcher=Pfeilmacher
|
||||||
|
Shepherd=Schäfer
|
||||||
|
Librarian=Bibliothekar
|
||||||
|
Cartographer=Kartograph
|
||||||
|
Armorer=Rüstungsschmied
|
||||||
|
Leatherworker=Lederarbeiter
|
||||||
|
Butcher=Metzger
|
||||||
|
Weapon Smith=Waffenschmied
|
||||||
|
Tool Smith=Werkzeugschmied
|
||||||
|
Cleric=Priester
|
||||||
|
Nitwit=Dorftrottel
|
||||||
|
Protects you from death while wielding it=Schützt vor dem Tod, wenn es gehalten wird
|
|
@ -0,0 +1,74 @@
|
||||||
|
# textdomain: mobs_mc
|
||||||
|
Totem of Undying=Tótem de la inmortalidad
|
||||||
|
A totem of undying is a rare artifact which may safe you from certain death.=Un tótem de la inmortalidad es un artefacto raro que puede salvarte de una muerte segura.
|
||||||
|
The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=El tótem solo funciona mientras lo sostienes en tu mano. Si recibes un daño crítico, no mueres y obtienes una segunda oportunidad con 1 HP. Sin embargo, el tótem se destruye en el proceso.
|
||||||
|
Agent=Agente
|
||||||
|
Bat=Murciélago
|
||||||
|
Blaze=Blaze
|
||||||
|
Chicken=Pollo
|
||||||
|
Cow=Vaca
|
||||||
|
Mooshroom=Champiñaca
|
||||||
|
Creeper=Creeper
|
||||||
|
Ender Dragon=Enderdragón
|
||||||
|
Enderman=Enderman
|
||||||
|
Endermite=Endermite
|
||||||
|
Ghast=Ghast
|
||||||
|
Elder Guardian=Gran guardián
|
||||||
|
Guardian=Guardián
|
||||||
|
Horse=Caballo
|
||||||
|
Skeleton Horse=Caballo esquelético
|
||||||
|
Zombie Horse=Caballo zombie
|
||||||
|
Donkey=Burro
|
||||||
|
Mule=Mula
|
||||||
|
Iron Golem=Golem de hierro
|
||||||
|
Llama=Llama
|
||||||
|
Ocelot=Ocelote
|
||||||
|
Parrot=Loro
|
||||||
|
Pig=Cerdo
|
||||||
|
Polar Bear=Oso polar
|
||||||
|
Rabbit=Conejo
|
||||||
|
Killer Bunny=Conejo asesino
|
||||||
|
Sheep=Oveja
|
||||||
|
Shulker=Shulker
|
||||||
|
Silverfish=Lepisma
|
||||||
|
Skeleton=Esqueleto
|
||||||
|
Stray=Esqueleto
|
||||||
|
Wither Skeleton=Esqueleto wither
|
||||||
|
Magma Cube=Cubo de Magma
|
||||||
|
Slime=Slime
|
||||||
|
Snow Golem=Golem de nieve
|
||||||
|
Spider=Araña
|
||||||
|
Cave Spider=Araña de las cuevas
|
||||||
|
Squid=Calamar
|
||||||
|
Vex=Ánima
|
||||||
|
Evoker=Invocador
|
||||||
|
Illusioner=Illusionista
|
||||||
|
Villager=Aldeano
|
||||||
|
Vindicator=Vindicador
|
||||||
|
Zombie Villager=Aldeano zombie
|
||||||
|
Witch=Bruja
|
||||||
|
Wither=Wither
|
||||||
|
Wolf=Lobo
|
||||||
|
Husk=Husk
|
||||||
|
Zombie=Zombie
|
||||||
|
Zombie Pigman=Cerdo Zombie
|
||||||
|
Iron Horse Armor=Armadura de hierro para caballo
|
||||||
|
Iron horse armor can be worn by horses to increase their protection from harm a bit.=Los caballos pueden usar armadura de caballo de hierro para aumentar un poco su protección contra el daño.
|
||||||
|
Golden Horse Armor=Armadura de oro para caballo
|
||||||
|
Golden horse armor can be worn by horses to increase their protection from harm.=Los caballos pueden usar armadura de caballo de oro para aumentar su protección contra el daño.
|
||||||
|
Diamond Horse Armor=Armadura de diamante para caballo
|
||||||
|
Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Los caballos pueden usar armadura de caballo de diamante para aumentar en gran medida su protección contra el daño.
|
||||||
|
Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=Colóquelo en un caballo para ponerle la armadura de caballo. Los burros y las mulas no pueden usar armadura de caballo.
|
||||||
|
Farmer=Granjero
|
||||||
|
Fisherman=Pescador
|
||||||
|
Fletcher=Flechador
|
||||||
|
Shepherd=Sacerdote
|
||||||
|
Librarian=Bibliotecario
|
||||||
|
Cartographer=Cartógrafo
|
||||||
|
Armorer=Armero
|
||||||
|
Leatherworker=Peletero
|
||||||
|
Butcher=Carnicero
|
||||||
|
Weapon Smith=Herrero de Armas
|
||||||
|
Tool Smith=Herrero de Herramientas
|
||||||
|
Cleric=Sacerdote
|
||||||
|
Nitwit=Simple
|
|
@ -1,647 +0,0 @@
|
||||||
# SOME DESCRIPTIVE TITLE.
|
|
||||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
|
||||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
||||||
#
|
|
||||||
#, fuzzy
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2018-01-25 18:45+0100\n"
|
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
||||||
"Language: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=CHARSET\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Blaze Rod"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "This is a crafting component dropped from dead blazes."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Blaze Powder"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "This item is mainly used for brewing potions and crafting."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Raw Chicken"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Raw chicken is a food item and can be eaten safely. Cooking it will increase "
|
|
||||||
"its nutritional value."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Cooked Chicken"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "A cooked chicken is a healthy food item which can be eaten."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Feather"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Feathers are used in crafting and are dropped from chickens."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Raw Beef"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Raw beef is the flesh from cows and can be eaten safely. Cooking it will "
|
|
||||||
"greatly increase its nutritional value."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Steak"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Steak is cooked beef from cows and can be eaten."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Milk"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Milk is a food item obtained by using a bucket on a cow."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Bowl"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Bowls are mainly used to hold tasty soups."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Mushroom Stew"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Mushroom stew is a healthy soup."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Dragon Egg"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Eye of Ender"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Ghast Tear"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"A ghast tear is an item used in potion brewing. It is dropped from dead "
|
|
||||||
"ghasts."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Saddle"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Saddles can be put on horses, donkeys, mules and pigs in order to mount them."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Rightclick an animal while holding a saddle to put on the saddle. You can "
|
|
||||||
"now mount the animal by rightclicking it again."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Rightclick a horse to put on the horse armor. Donkeys and mules can't wear "
|
|
||||||
"horse armor."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Iron Horse Armor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Iron horse armor can be worn by horses to increase their protection from "
|
|
||||||
"harm a bit."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Golden Horse Armor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Golden horse armor can be worn by horses to increase their protection from "
|
|
||||||
"harm."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Diamond Horse Armor"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Diamond horse armor can be worn by horses to greatly increase their "
|
|
||||||
"protection from harm."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Raw Porkchop"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it "
|
|
||||||
"will greatly increase its nutritional value."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Cooked Porkchop"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Carrot on a Stick"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"A carrot on a stick can be used on saddled pigs to ride them. Pigs will also "
|
|
||||||
"follow anyone who holds a carrot on a stick near them."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Rightclick a saddled pig with the carrot on a stick to mount it. You can now "
|
|
||||||
"ride it like a horse."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Raw Rabbit"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Raw rabbit is a food item from a dead rabbit. It can be eaten safely. "
|
|
||||||
"Cooking it will increase its nutritional value."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Cooked Rabbit"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "This is a food item which can be eaten."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Rabbit Hide"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Rabbit hide is used to create leather."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Rabbit's Foot"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "This item is used in brewing."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Raw Mutton"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it "
|
|
||||||
"will greatly increase its nutritional value."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Cooked Mutton"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Cooked mutton is the cooked flesh from a sheep and is used as food."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Shulker Shell"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Shulker shells are used in crafting. They are dropped from dead shulkers."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Magma Cream"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Magma cream is a crafting component."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Slimeball"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Slimeballs are used in crafting. They are dropped from slimes."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Spider Eye"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Spider eyes are used mainly in crafting and brewing. Spider eyes can be "
|
|
||||||
"eaten, but they poison you and reduce your health by 2 hit points."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Totem of Undying"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"A totem of undying is a rare artifact which may safe you from certain death."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"The totem only works while you hold it in your hand. If you receive fatal "
|
|
||||||
"damage, you are saved from death and you get a second chance with 1 HP. The "
|
|
||||||
"totem is destroyed in the process, however."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Rotten Flesh"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Yuck! This piece of flesh clearly has seen better days. Eating it will only "
|
|
||||||
"poison you and reduces your health by 4 hit points. But tamed wolves can eat "
|
|
||||||
"it just fine."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Nether Star"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "A nether star is a crafting component. It is dropped from the Wither."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid "Bone"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Bones can be used to tame wolves so they will protect you. They are also "
|
|
||||||
"useful as a crafting ingredient."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 1_items_default.lua
|
|
||||||
msgid ""
|
|
||||||
"Hold the bone in your hand near wolves to attract them. Rightclick the wolf "
|
|
||||||
"to give it a bone and tame it."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid "Arrow"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid "Arrows are ammunition for bows."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid ""
|
|
||||||
"To use arrows as ammunition for a bow, put them in the inventory slot "
|
|
||||||
"following the bow. Slots are counted left to right, top to bottom."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid "Bow"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid "Bows are ranged weapons to shoot arrows at your foes."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid ""
|
|
||||||
"To use the bow, you first need to have at least one arrow in slot following "
|
|
||||||
"the bow. Leftclick to shoot. Each hit deals 3 damage."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid "Egg"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid ""
|
|
||||||
"Eggs can be thrown and break on impact. There is a small chance that 1 or "
|
|
||||||
"even 4 chicks will pop out"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid "Snowball"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 2_throwing.lua
|
|
||||||
msgid ""
|
|
||||||
"Snowballs can be thrown at your enemies. A snowball deals 3 damage to "
|
|
||||||
"blazes, but is harmless to anything else."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 4_heads.lua
|
|
||||||
msgid "Zombie Head"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 4_heads.lua
|
|
||||||
msgid ""
|
|
||||||
"A zombie head is a small decorative block which resembles the head of a "
|
|
||||||
"zombie."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 4_heads.lua
|
|
||||||
msgid "Creeper Head"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 4_heads.lua
|
|
||||||
msgid ""
|
|
||||||
"A creeper head is a small decorative block which resembles the head of a "
|
|
||||||
"creeper."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 4_heads.lua
|
|
||||||
msgid "Skeleton Skull"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 4_heads.lua
|
|
||||||
msgid ""
|
|
||||||
"A skeleton skull is a small decorative block which resembles the skull of a "
|
|
||||||
"skeleton."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 4_heads.lua
|
|
||||||
msgid "Wither Skeleton Skull"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: 4_heads.lua
|
|
||||||
msgid ""
|
|
||||||
"A wither skeleton skull is a small decorative block which resembles the "
|
|
||||||
"skull of a wither skeleton."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: agent.lua
|
|
||||||
msgid "Agent"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: bat.lua
|
|
||||||
msgid "Bat"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: blaze.lua
|
|
||||||
msgid "Blaze"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: chicken.lua
|
|
||||||
msgid "Chicken"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: cow+mooshroom.lua
|
|
||||||
msgid "Cow"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: cow+mooshroom.lua
|
|
||||||
msgid "Mooshroom"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: creeper.lua
|
|
||||||
msgid "Creeper"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ender_dragon.lua
|
|
||||||
msgid "Ender Dragon"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: enderman.lua
|
|
||||||
msgid "Enderman"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: endermite.lua
|
|
||||||
msgid "Endermite"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ghast.lua
|
|
||||||
msgid "Ghast"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: guardian_elder.lua
|
|
||||||
msgid "Elder Guardian"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: guardian.lua
|
|
||||||
msgid "Guardian"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: horse.lua
|
|
||||||
msgid "Horse"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: horse.lua
|
|
||||||
msgid "Skeleton Horse"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: horse.lua
|
|
||||||
msgid "Zombie Horse"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: horse.lua
|
|
||||||
msgid "Donkey"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: horse.lua
|
|
||||||
msgid "Mule"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: iron_golem.lua
|
|
||||||
msgid "Iron Golem"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: llama.lua
|
|
||||||
msgid "Llama"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ocelot.lua
|
|
||||||
msgid "Ocelot"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: parrot.lua
|
|
||||||
msgid "Parrot"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: pig.lua
|
|
||||||
msgid "Pig"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: polar_bear.lua
|
|
||||||
msgid "Polar Bear"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: rabbit.lua
|
|
||||||
msgid "Rabbit"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: rabbit.lua
|
|
||||||
msgid "Killer Bunny"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: sheep.lua
|
|
||||||
msgid "Sheep"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: shulker.lua
|
|
||||||
msgid "Shulker"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: silverfish.lua
|
|
||||||
msgid "Silverfish"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: silverfish.lua
|
|
||||||
msgid "Stone Monster Egg"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: silverfish.lua
|
|
||||||
msgid "Cobblestone Monster Egg"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: silverfish.lua
|
|
||||||
msgid "Mossy Cobblestone Monster Egg"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: silverfish.lua
|
|
||||||
msgid "Stone Brick Monster Egg"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: silverfish.lua
|
|
||||||
msgid "Stone Block Monster Egg"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: skeleton+stray.lua
|
|
||||||
msgid "Skeleton"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: skeleton+stray.lua
|
|
||||||
msgid "Stray"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: skeleton_wither.lua
|
|
||||||
msgid "Wither Skeleton"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: slime+magma_cube.lua
|
|
||||||
msgid "Magma Cube"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: slime+magma_cube.lua
|
|
||||||
msgid "Slime"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: snowman.lua
|
|
||||||
msgid "Snow Golem"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: spider.lua
|
|
||||||
msgid "Spider"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: spider.lua
|
|
||||||
msgid "Cave Spider"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: squid.lua
|
|
||||||
msgid "Squid"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: vex.lua
|
|
||||||
msgid "Vex"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: villager_evoker.lua
|
|
||||||
msgid "Evoker"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: villager_illusioner.lua
|
|
||||||
msgid "Illusioner"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: villager.lua
|
|
||||||
msgid "Villager"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: villager_vindicator.lua
|
|
||||||
msgid "Vindicator"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: villager_zombie.lua
|
|
||||||
msgid "Zombie Villager"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: witch.lua
|
|
||||||
msgid "Witch"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: wither.lua
|
|
||||||
msgid "Wither"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: wolf.lua
|
|
||||||
msgid "Wolf"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: zombie.lua
|
|
||||||
msgid "Husk"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: zombie.lua
|
|
||||||
msgid "Zombie"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: zombiepig.lua
|
|
||||||
msgid "Zombie Pigman"
|
|
||||||
msgstr ""
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
# textdomain: mobs_mc
|
||||||
|
Totem of Undying=
|
||||||
|
A totem of undying is a rare artifact which may safe you from certain death.=
|
||||||
|
The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=
|
||||||
|
Agent=
|
||||||
|
Bat=
|
||||||
|
Blaze=
|
||||||
|
Chicken=
|
||||||
|
Cow=
|
||||||
|
Mooshroom=
|
||||||
|
Creeper=
|
||||||
|
Ender Dragon=
|
||||||
|
Enderman=
|
||||||
|
Endermite=
|
||||||
|
Ghast=
|
||||||
|
Elder Guardian=
|
||||||
|
Guardian=
|
||||||
|
Horse=
|
||||||
|
Skeleton Horse=
|
||||||
|
Zombie Horse=
|
||||||
|
Donkey=
|
||||||
|
Mule=
|
||||||
|
Iron Golem=
|
||||||
|
Llama=
|
||||||
|
Ocelot=
|
||||||
|
Parrot=
|
||||||
|
Pig=
|
||||||
|
Polar Bear=
|
||||||
|
Rabbit=
|
||||||
|
Killer Bunny=
|
||||||
|
Sheep=
|
||||||
|
Shulker=
|
||||||
|
Silverfish=
|
||||||
|
Skeleton=
|
||||||
|
Stray=
|
||||||
|
Wither Skeleton=
|
||||||
|
Magma Cube=
|
||||||
|
Slime=
|
||||||
|
Snow Golem=
|
||||||
|
Spider=
|
||||||
|
Cave Spider=
|
||||||
|
Squid=
|
||||||
|
Vex=
|
||||||
|
Evoker=
|
||||||
|
Illusioner=
|
||||||
|
Villager=
|
||||||
|
Vindicator=
|
||||||
|
Zombie Villager=
|
||||||
|
Witch=
|
||||||
|
Wither=
|
||||||
|
Wolf=
|
||||||
|
Husk=
|
||||||
|
Zombie=
|
||||||
|
Zombie Pigman=
|
||||||
|
Iron Horse Armor=
|
||||||
|
Iron horse armor can be worn by horses to increase their protection from harm a bit.=
|
||||||
|
Golden Horse Armor=
|
||||||
|
Golden horse armor can be worn by horses to increase their protection from harm.=
|
||||||
|
Diamond Horse Armor=
|
||||||
|
Diamond horse armor can be worn by horses to greatly increase their protection from harm.=
|
||||||
|
Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=
|
||||||
|
Farmer=
|
||||||
|
Fisherman=
|
||||||
|
Fletcher=
|
||||||
|
Shepherd=
|
||||||
|
Librarian=
|
||||||
|
Cartographer=
|
||||||
|
Armorer=
|
||||||
|
Leatherworker=
|
||||||
|
Butcher=
|
||||||
|
Weapon Smith=
|
||||||
|
Tool Smith=
|
||||||
|
Cleric=
|
||||||
|
Nitwit=
|
||||||
|
Protects you from death while wielding it=
|
|
@ -3,9 +3,7 @@
|
||||||
--made for MC like Survival game
|
--made for MC like Survival game
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
--###################
|
--###################
|
||||||
--################### OCELOT AND CAT
|
--################### OCELOT AND CAT
|
||||||
|
@ -44,9 +42,6 @@ local ocelot = {
|
||||||
run_velocity = 3,
|
run_velocity = 3,
|
||||||
floats = 1,
|
floats = 1,
|
||||||
runaway = true,
|
runaway = true,
|
||||||
water_damage = 0,
|
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
fall_damage = 0,
|
fall_damage = 0,
|
||||||
fear_height = 4,
|
fear_height = 4,
|
||||||
sounds = {
|
sounds = {
|
||||||
|
@ -206,9 +201,6 @@ mobs:spawn({
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- compatibility
|
|
||||||
mobs:alias_mob("mobs:kitten", "mobs_mc:ocelot")
|
|
||||||
|
|
||||||
-- spawn eggs
|
-- spawn eggs
|
||||||
-- FIXME: The spawn icon shows a cat texture, not an ocelot texture
|
-- FIXME: The spawn icon shows a cat texture, not an ocelot texture
|
||||||
mobs:register_egg("mobs_mc:ocelot", S("Ocelot"), "mobs_mc_spawn_icon_cat.png", 0)
|
mobs:register_egg("mobs_mc:ocelot", S("Ocelot"), "mobs_mc_spawn_icon_cat.png", 0)
|
||||||
|
|
|
@ -3,12 +3,7 @@
|
||||||
--made for MC like Survival game
|
--made for MC like Survival game
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
--dofile(minetest.get_modpath("mobs").."/api.lua")
|
|
||||||
|
|
||||||
|
|
||||||
--###################
|
--###################
|
||||||
--################### PARROT
|
--################### PARROT
|
||||||
|
@ -49,9 +44,6 @@ mobs:register_mob("mobs_mc:parrot", {
|
||||||
--fly_end = 45,
|
--fly_end = 45,
|
||||||
},
|
},
|
||||||
walk_chance = 100,
|
walk_chance = 100,
|
||||||
water_damage = 0,
|
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
fall_damage = 0,
|
fall_damage = 0,
|
||||||
fall_speed = -2.25,
|
fall_speed = -2.25,
|
||||||
attack_type = "dogfight",
|
attack_type = "dogfight",
|
||||||
|
@ -60,7 +52,6 @@ mobs:register_mob("mobs_mc:parrot", {
|
||||||
floats = 1,
|
floats = 1,
|
||||||
physical = true,
|
physical = true,
|
||||||
fly = true,
|
fly = true,
|
||||||
fly_in = {"air"},
|
|
||||||
fear_height = 4,
|
fear_height = 4,
|
||||||
view_range = 16,
|
view_range = 16,
|
||||||
follow = mobs_mc.follow.parrot,
|
follow = mobs_mc.follow.parrot,
|
||||||
|
@ -93,7 +84,7 @@ mobs:register_mob("mobs_mc:parrot", {
|
||||||
--mobs:spawn_specific("mobs_mc:parrot", mobs_mc.spawn.jungle, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 30000, 1, mobs_mc.spawn_height.water+1, mobs_mc.spawn_height.overworld_max)
|
--mobs:spawn_specific("mobs_mc:parrot", mobs_mc.spawn.jungle, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 30000, 1, mobs_mc.spawn_height.water+1, mobs_mc.spawn_height.overworld_max)
|
||||||
|
|
||||||
-- spawn eggs
|
-- spawn eggs
|
||||||
mobs:register_egg("mobs_mc:parrot", S("Parrot"), "mobs_mc_spawn_icon_parrot.png", 0)
|
mobs:register_egg("mobs_mc:parrot", S("Parrot"), "mobs_mc_spawn_icon_parrot.png", 0, true)
|
||||||
|
|
||||||
if minetest.settings:get_bool("log_mods") then
|
if minetest.settings:get_bool("log_mods") then
|
||||||
minetest.log("action", "MC Parrot loaded")
|
minetest.log("action", "MC Parrot loaded")
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
mobs:register_mob("mobs_mc:pig", {
|
mobs:register_mob("mobs_mc:pig", {
|
||||||
type = "animal",
|
type = "animal",
|
||||||
|
@ -27,9 +25,6 @@ mobs:register_mob("mobs_mc:pig", {
|
||||||
min = 1,
|
min = 1,
|
||||||
max = 3,},
|
max = 3,},
|
||||||
},
|
},
|
||||||
water_damage = 1,
|
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
fear_height = 4,
|
fear_height = 4,
|
||||||
sounds = {
|
sounds = {
|
||||||
random = "mobs_pig",
|
random = "mobs_pig",
|
||||||
|
@ -59,7 +54,7 @@ mobs:register_mob("mobs_mc:pig", {
|
||||||
self.max_speed_reverse = 2
|
self.max_speed_reverse = 2
|
||||||
self.accel = 4
|
self.accel = 4
|
||||||
self.terrain_type = 3
|
self.terrain_type = 3
|
||||||
self.driver_attach_at = {x = 0.0, y = 6.75, z = -1.5}
|
self.driver_attach_at = {x = 0.0, y = 2.75, z = -1.5}
|
||||||
self.driver_eye_offset = {x = 0, y = 3, z = 0}
|
self.driver_eye_offset = {x = 0, y = 3, z = 0}
|
||||||
self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y}
|
self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y}
|
||||||
end
|
end
|
||||||
|
@ -130,6 +125,7 @@ mobs:register_mob("mobs_mc:pig", {
|
||||||
stack:take_item()
|
stack:take_item()
|
||||||
inv:set_stack("main", clicker:get_wield_index(), stack)
|
inv:set_stack("main", clicker:get_wield_index(), stack)
|
||||||
end
|
end
|
||||||
|
minetest.sound_play({name = "mcl_armor_equip_leather"}, {gain=0.5, max_hear_distance=8, pos=self.object:get_pos()})
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -183,9 +179,6 @@ mobs:register_mob("mobs_mc:pig", {
|
||||||
|
|
||||||
mobs:spawn_specific("mobs_mc:pig", mobs_mc.spawn.grassland, {"air"}, 9, minetest.LIGHT_MAX+1, 30, 15000, 30, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
|
mobs:spawn_specific("mobs_mc:pig", mobs_mc.spawn.grassland, {"air"}, 9, minetest.LIGHT_MAX+1, 30, 15000, 30, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
|
||||||
|
|
||||||
-- compatibility
|
|
||||||
mobs:alias_mob("mobs:pig", "mobs_mc:pig")
|
|
||||||
|
|
||||||
-- spawn eggs
|
-- spawn eggs
|
||||||
mobs:register_egg("mobs_mc:pig", S("Pig"), "mobs_mc_spawn_icon_pig.png", 0)
|
mobs:register_egg("mobs_mc:pig", S("Pig"), "mobs_mc_spawn_icon_pig.png", 0)
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
--dofile(minetest.get_modpath("mobs").."/api.lua")
|
|
||||||
|
|
||||||
--###################
|
--###################
|
||||||
--################### POLARBEAR
|
--################### POLARBEAR
|
||||||
|
@ -18,6 +14,7 @@ mobs:register_mob("mobs_mc:polar_bear", {
|
||||||
stepheight = 1.2,
|
stepheight = 1.2,
|
||||||
hp_min = 30,
|
hp_min = 30,
|
||||||
hp_max = 30,
|
hp_max = 30,
|
||||||
|
breath_max = -1,
|
||||||
collisionbox = {-0.7, -0.01, -0.7, 0.7, 1.39, 0.7},
|
collisionbox = {-0.7, -0.01, -0.7, 0.7, 1.39, 0.7},
|
||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_mc_polarbear.b3d",
|
mesh = "mobs_mc_polarbear.b3d",
|
||||||
|
@ -45,10 +42,7 @@ mobs:register_mob("mobs_mc:polar_bear", {
|
||||||
max = 2,},
|
max = 2,},
|
||||||
|
|
||||||
},
|
},
|
||||||
water_damage = 0,
|
|
||||||
floats = 1,
|
floats = 1,
|
||||||
lava_damage = 5,
|
|
||||||
light_damage = 0,
|
|
||||||
fear_height = 4,
|
fear_height = 4,
|
||||||
-- TODO: sounds
|
-- TODO: sounds
|
||||||
animation = {
|
animation = {
|
||||||
|
@ -62,10 +56,6 @@ mobs:register_mob("mobs_mc:polar_bear", {
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
-- compatibility
|
|
||||||
mobs:alias_mob("mobs_mc:polarbear", "mobs_mc:polar_bear")
|
|
||||||
|
|
||||||
|
|
||||||
mobs:spawn_specific("mobs_mc:polar_bear", mobs_mc.spawn.snow, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 7000, 3, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
|
mobs:spawn_specific("mobs_mc:polar_bear", mobs_mc.spawn.snow, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 7000, 3, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
|
||||||
|
|
||||||
-- spawn egg
|
-- spawn egg
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
local rabbit = {
|
local rabbit = {
|
||||||
type = "animal",
|
type = "animal",
|
||||||
|
@ -37,9 +35,6 @@ local rabbit = {
|
||||||
-- TODO: Drop rabbit's foot when it's useful
|
-- TODO: Drop rabbit's foot when it's useful
|
||||||
--{name = mobs_mc.items.rabbit_foot, chance = 10, min = 1, max = 1},
|
--{name = mobs_mc.items.rabbit_foot, chance = 10, min = 1, max = 1},
|
||||||
},
|
},
|
||||||
water_damage = 1,
|
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
fear_height = 4,
|
fear_height = 4,
|
||||||
animation = {
|
animation = {
|
||||||
speed_normal = 25, speed_run = 50,
|
speed_normal = 25, speed_run = 50,
|
||||||
|
@ -167,9 +162,6 @@ mobs:register_egg("mobs_mc:rabbit", S("Rabbit"), "mobs_mc_spawn_icon_rabbit.png"
|
||||||
mobs:register_egg("mobs_mc:killer_bunny", S("Killer Bunny"), "mobs_mc_spawn_icon_rabbit.png^[colorize:#FF0000:192", 0) -- TODO: Update inventory image
|
mobs:register_egg("mobs_mc:killer_bunny", S("Killer Bunny"), "mobs_mc_spawn_icon_rabbit.png^[colorize:#FF0000:192", 0) -- TODO: Update inventory image
|
||||||
|
|
||||||
|
|
||||||
-- compatibility
|
|
||||||
mobs:alias_mob("mobs:bunny", "mobs_mc:rabbit")
|
|
||||||
|
|
||||||
if minetest.settings:get_bool("log_mods") then
|
if minetest.settings:get_bool("log_mods") then
|
||||||
minetest.log("action", "MC Bunny loaded")
|
minetest.log("action", "MC Bunny loaded")
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
--###################
|
--###################
|
||||||
--################### SHEEP
|
--################### SHEEP
|
||||||
|
@ -32,6 +30,9 @@ if minetest.get_modpath("mcl_wool") ~= nil then
|
||||||
end
|
end
|
||||||
|
|
||||||
local sheep_texture = function(color_group)
|
local sheep_texture = function(color_group)
|
||||||
|
if not color_group then
|
||||||
|
color_group = "unicolor_white"
|
||||||
|
end
|
||||||
return {
|
return {
|
||||||
"mobs_mc_sheep_fur.png^[colorize:"..colors[color_group][2],
|
"mobs_mc_sheep_fur.png^[colorize:"..colors[color_group][2],
|
||||||
"mobs_mc_sheep.png",
|
"mobs_mc_sheep.png",
|
||||||
|
@ -66,9 +67,6 @@ mobs:register_mob("mobs_mc:sheep", {
|
||||||
min = 1,
|
min = 1,
|
||||||
max = 1,},
|
max = 1,},
|
||||||
},
|
},
|
||||||
water_damage = 1,
|
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
fear_height = 4,
|
fear_height = 4,
|
||||||
sounds = {
|
sounds = {
|
||||||
random = "mobs_sheep",
|
random = "mobs_sheep",
|
||||||
|
@ -184,6 +182,10 @@ mobs:register_mob("mobs_mc:sheep", {
|
||||||
minetest.log("verbose", "[mobs_mc] " ..item:get_name() .. " " .. minetest.get_item_group(item:get_name(), "dye"))
|
minetest.log("verbose", "[mobs_mc] " ..item:get_name() .. " " .. minetest.get_item_group(item:get_name(), "dye"))
|
||||||
for group, colordata in pairs(colors) do
|
for group, colordata in pairs(colors) do
|
||||||
if minetest.get_item_group(item:get_name(), group) == 1 then
|
if minetest.get_item_group(item:get_name(), group) == 1 then
|
||||||
|
if not minetest.settings:get_bool("creative_mode") then
|
||||||
|
item:take_item()
|
||||||
|
clicker:set_wielded_item(item)
|
||||||
|
end
|
||||||
self.base_texture = sheep_texture(group)
|
self.base_texture = sheep_texture(group)
|
||||||
self.object:set_properties({
|
self.object:set_properties({
|
||||||
textures = self.base_texture,
|
textures = self.base_texture,
|
||||||
|
@ -229,6 +231,7 @@ mobs:register_mob("mobs_mc:sheep", {
|
||||||
local groups = minetest.registered_items[new_dye].groups
|
local groups = minetest.registered_items[new_dye].groups
|
||||||
for k, v in pairs(groups) do
|
for k, v in pairs(groups) do
|
||||||
if string.sub(k, 1, 9) == "unicolor_" then
|
if string.sub(k, 1, 9) == "unicolor_" then
|
||||||
|
ent_c.color = k
|
||||||
ent_c.base_texture = sheep_texture(k)
|
ent_c.base_texture = sheep_texture(k)
|
||||||
mixed = true
|
mixed = true
|
||||||
break
|
break
|
||||||
|
@ -240,11 +243,12 @@ mobs:register_mob("mobs_mc:sheep", {
|
||||||
if not mixed then
|
if not mixed then
|
||||||
-- Choose color randomly from one of the parents
|
-- Choose color randomly from one of the parents
|
||||||
local p = math.random(1, 2)
|
local p = math.random(1, 2)
|
||||||
if p == 1 then
|
if p == 1 and color1 then
|
||||||
ent_c.base_texture = sheep_texture(color1)
|
ent_c.color = color1
|
||||||
else
|
else
|
||||||
ent_c.base_texture = sheep_texture(color2)
|
ent_c.color = color2
|
||||||
end
|
end
|
||||||
|
ent_c.base_texture = sheep_texture(ent_c.color)
|
||||||
end
|
end
|
||||||
child:set_properties({textures = ent_c.base_texture})
|
child:set_properties({textures = ent_c.base_texture})
|
||||||
ent_c.initial_color_set = true
|
ent_c.initial_color_set = true
|
||||||
|
@ -256,8 +260,6 @@ mobs:register_mob("mobs_mc:sheep", {
|
||||||
})
|
})
|
||||||
mobs:spawn_specific("mobs_mc:sheep", mobs_mc.spawn.grassland, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 15000, 3, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
|
mobs:spawn_specific("mobs_mc:sheep", mobs_mc.spawn.grassland, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 15000, 3, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
|
||||||
|
|
||||||
-- compatibility
|
|
||||||
mobs:alias_mob("mobs_animal:sheep", "mobs_mc:sheep")
|
|
||||||
-- spawn eggs
|
-- spawn eggs
|
||||||
mobs:register_egg("mobs_mc:sheep", S("Sheep"), "mobs_mc_spawn_icon_sheep.png", 0)
|
mobs:register_egg("mobs_mc:sheep", S("Sheep"), "mobs_mc_spawn_icon_sheep.png", 0)
|
||||||
|
|
||||||
|
|
|
@ -3,11 +3,7 @@
|
||||||
--made for MC like Survival game
|
--made for MC like Survival game
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
--dofile(minetest.get_modpath("mobs").."/api.lua")
|
|
||||||
|
|
||||||
--###################
|
--###################
|
||||||
--################### SHULKER
|
--################### SHULKER
|
||||||
|
@ -48,12 +44,8 @@ mobs:register_mob("mobs_mc:shulker", {
|
||||||
run_start = 0, run_end = 45,
|
run_start = 0, run_end = 45,
|
||||||
punch_start = 80, punch_end = 100,
|
punch_start = 80, punch_end = 100,
|
||||||
},
|
},
|
||||||
blood_amount = 0,
|
|
||||||
view_range = 16,
|
view_range = 16,
|
||||||
fear_height = 4,
|
fear_height = 4,
|
||||||
water_damage = 1,
|
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
-- bullet arrow (weapon)
|
-- bullet arrow (weapon)
|
||||||
|
@ -70,8 +62,8 @@ mobs:register_arrow("mobs_mc:shulkerbullet", {
|
||||||
}, nil)
|
}, nil)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
hit_mob = function(self, player)
|
hit_mob = function(self, mob)
|
||||||
player:punch(self.object, 1.0, {
|
mob:punch(self.object, 1.0, {
|
||||||
full_punch_interval = 1.0,
|
full_punch_interval = 1.0,
|
||||||
damage_groups = {fleshy = 4},
|
damage_groups = {fleshy = 4},
|
||||||
}, nil)
|
}, nil)
|
||||||
|
@ -82,7 +74,7 @@ mobs:register_arrow("mobs_mc:shulkerbullet", {
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
mobs:register_egg("mobs_mc:shulker", S("Shulker"), "mobs_mc_spawn_icon_shulker.png", 0)
|
mobs:register_egg("mobs_mc:shulker", S("Schulker"), "mobs_mc_spawn_icon_shulker.png", 0)
|
||||||
|
|
||||||
mobs:spawn_specific("mobs_mc:shulker", mobs_mc.spawn.end_city, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 5000, 2, mobs_mc.spawn_height.end_min, mobs_mc.spawn_height.end_max)
|
mobs:spawn_specific("mobs_mc:shulker", mobs_mc.spawn.end_city, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 5000, 2, mobs_mc.spawn_height.end_min, mobs_mc.spawn_height.end_max)
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,7 @@
|
||||||
--################### SILVERFISH
|
--################### SILVERFISH
|
||||||
--###################
|
--###################
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
mobs:register_mob("mobs_mc:silverfish", {
|
mobs:register_mob("mobs_mc:silverfish", {
|
||||||
type = "monster",
|
type = "monster",
|
||||||
|
@ -31,9 +29,6 @@ mobs:register_mob("mobs_mc:silverfish", {
|
||||||
walk_velocity = 0.6,
|
walk_velocity = 0.6,
|
||||||
run_velocity = 2,
|
run_velocity = 2,
|
||||||
jump = true,
|
jump = true,
|
||||||
water_damage = 1,
|
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
fear_height = 4,
|
fear_height = 4,
|
||||||
replace_what = mobs_mc.replace.silverfish,
|
replace_what = mobs_mc.replace.silverfish,
|
||||||
replace_rate = 2,
|
replace_rate = 2,
|
||||||
|
@ -47,7 +42,6 @@ mobs:register_mob("mobs_mc:silverfish", {
|
||||||
attack_type = "dogfight",
|
attack_type = "dogfight",
|
||||||
damage = 1,
|
damage = 1,
|
||||||
reach = 1,
|
reach = 1,
|
||||||
blood_amount = 0,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
mobs:register_egg("mobs_mc:silverfish", S("Silverfish"), "mobs_mc_spawn_icon_silverfish.png", 0)
|
mobs:register_egg("mobs_mc:silverfish", S("Silverfish"), "mobs_mc_spawn_icon_silverfish.png", 0)
|
||||||
|
@ -60,7 +54,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
minetest.register_node("mobs_mc:monster_egg_stone", {
|
minetest.register_node("mobs_mc:monster_egg_stone", {
|
||||||
description = S("Stone Monster Egg"),
|
description = "Stone Monster Egg",
|
||||||
tiles = {"default_stone.png"},
|
tiles = {"default_stone.png"},
|
||||||
groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1},
|
groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1},
|
||||||
drop = '',
|
drop = '',
|
||||||
|
@ -70,7 +64,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("mobs_mc:monster_egg_cobble", {
|
minetest.register_node("mobs_mc:monster_egg_cobble", {
|
||||||
description = S("Cobblestone Monster Egg"),
|
description = "Cobblestone Monster Egg",
|
||||||
tiles = {"default_cobble.png"},
|
tiles = {"default_cobble.png"},
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1},
|
groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1},
|
||||||
|
@ -80,7 +74,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("mobs_mc:monster_egg_mossycobble", {
|
minetest.register_node("mobs_mc:monster_egg_mossycobble", {
|
||||||
description = S("Mossy Cobblestone Monster Egg"),
|
description = "Mossy Cobblestone Monster Egg",
|
||||||
tiles = {"default_mossycobble.png"},
|
tiles = {"default_mossycobble.png"},
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1},
|
groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1},
|
||||||
|
@ -90,7 +84,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("mobs_mc:monster_egg_stonebrick", {
|
minetest.register_node("mobs_mc:monster_egg_stonebrick", {
|
||||||
description = S("Stone Brick Monster Egg"),
|
description = "Stone Brick Monster Egg",
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
place_param2 = 0,
|
place_param2 = 0,
|
||||||
tiles = {"default_stone_brick.png"},
|
tiles = {"default_stone_brick.png"},
|
||||||
|
@ -102,7 +96,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("mobs_mc:monster_egg_stone_block", {
|
minetest.register_node("mobs_mc:monster_egg_stone_block", {
|
||||||
description = S("Stone Block Monster Egg"),
|
description = "Stone Block Monster Egg",
|
||||||
tiles = {"default_stone_block.png"},
|
tiles = {"default_stone_block.png"},
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1},
|
groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1},
|
||||||
|
|
|
@ -3,12 +3,8 @@
|
||||||
--made for MC like Survival game
|
--made for MC like Survival game
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
local mod_bows = minetest.get_modpath("mcl_bows") ~= nil
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
--dofile(minetest.get_modpath("mobs").."/api.lua")
|
|
||||||
|
|
||||||
|
|
||||||
--###################
|
--###################
|
||||||
--################### SKELETON
|
--################### SKELETON
|
||||||
|
@ -20,6 +16,7 @@ local skeleton = {
|
||||||
type = "monster",
|
type = "monster",
|
||||||
hp_min = 20,
|
hp_min = 20,
|
||||||
hp_max = 20,
|
hp_max = 20,
|
||||||
|
breath_max = -1,
|
||||||
collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.98, 0.3},
|
collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.98, 0.3},
|
||||||
pathfinding = 1,
|
pathfinding = 1,
|
||||||
group_attack = true,
|
group_attack = true,
|
||||||
|
@ -35,7 +32,6 @@ local skeleton = {
|
||||||
random = "mobs_mc_skeleton_random",
|
random = "mobs_mc_skeleton_random",
|
||||||
death = "mobs_mc_skeleton_death",
|
death = "mobs_mc_skeleton_death",
|
||||||
damage = "mobs_mc_skeleton_hurt",
|
damage = "mobs_mc_skeleton_hurt",
|
||||||
shoot_attack = "mcl_bows_bow_shoot",
|
|
||||||
distance = 16,
|
distance = 16,
|
||||||
},
|
},
|
||||||
walk_velocity = 1.2,
|
walk_velocity = 1.2,
|
||||||
|
@ -78,18 +74,22 @@ local skeleton = {
|
||||||
die_speed = 15,
|
die_speed = 15,
|
||||||
die_loop = false,
|
die_loop = false,
|
||||||
},
|
},
|
||||||
water_damage = 1,
|
|
||||||
lava_damage = 4,
|
|
||||||
sunlight_damage = 1,
|
sunlight_damage = 1,
|
||||||
view_range = 16,
|
view_range = 16,
|
||||||
fear_height = 4,
|
fear_height = 4,
|
||||||
attack_type = "dogshoot",
|
attack_type = "dogshoot",
|
||||||
arrow = "mobs_mc:arrow_entity",
|
arrow = "mcl_bows:arrow_entity",
|
||||||
shoot_interval = 2.5,
|
shoot_arrow = function(self, pos, dir)
|
||||||
shoot_offset = 1,
|
if mod_bows then
|
||||||
|
-- 2-4 damage per arrow
|
||||||
|
local dmg = math.max(4, math.random(2, 8))
|
||||||
|
mcl_bows.shoot_arrow("mcl_bows:arrow", pos, dir, self.object:get_yaw(), self.object, nil, dmg)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
shoot_interval = 2,
|
||||||
|
shoot_offset = 1.5,
|
||||||
dogshoot_switch = 1,
|
dogshoot_switch = 1,
|
||||||
dogshoot_count_max =1.8,
|
dogshoot_count_max =1.8,
|
||||||
blood_amount = 0,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mobs:register_mob("mobs_mc:skeleton", skeleton)
|
mobs:register_mob("mobs_mc:skeleton", skeleton)
|
||||||
|
@ -121,9 +121,6 @@ table.insert(stray.drops, {
|
||||||
|
|
||||||
mobs:register_mob("mobs_mc:stray", stray)
|
mobs:register_mob("mobs_mc:stray", stray)
|
||||||
|
|
||||||
-- compatibility
|
|
||||||
mobs:alias_mob("mobs:skeleton", "mobs_mc:skeleton")
|
|
||||||
|
|
||||||
-- Overworld spawn
|
-- Overworld spawn
|
||||||
mobs:spawn_specific("mobs_mc:skeleton", mobs_mc.spawn.solid, {"air"}, 0, 7, 20, 17000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
|
mobs:spawn_specific("mobs_mc:skeleton", mobs_mc.spawn.solid, {"air"}, 0, 7, 20, 17000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
|
||||||
-- Nether spawn
|
-- Nether spawn
|
||||||
|
|
|
@ -3,9 +3,7 @@
|
||||||
--made for MC like Survival game
|
--made for MC like Survival game
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
--###################
|
--###################
|
||||||
--################### WITHER SKELETON
|
--################### WITHER SKELETON
|
||||||
|
@ -15,6 +13,7 @@ mobs:register_mob("mobs_mc:witherskeleton", {
|
||||||
type = "monster",
|
type = "monster",
|
||||||
hp_min = 20,
|
hp_min = 20,
|
||||||
hp_max = 20,
|
hp_max = 20,
|
||||||
|
breath_max = -1,
|
||||||
pathfinding = 1,
|
pathfinding = 1,
|
||||||
group_attack = true,
|
group_attack = true,
|
||||||
collisionbox = {-0.35, -0.01, -0.35, 0.35, 2.39, 0.35},
|
collisionbox = {-0.35, -0.01, -0.35, 0.35, 2.39, 0.35},
|
||||||
|
@ -76,12 +75,12 @@ mobs:register_mob("mobs_mc:witherskeleton", {
|
||||||
},
|
},
|
||||||
water_damage = 0,
|
water_damage = 0,
|
||||||
lava_damage = 0,
|
lava_damage = 0,
|
||||||
|
fire_damage = 0,
|
||||||
light_damage = 0,
|
light_damage = 0,
|
||||||
view_range = 16,
|
view_range = 16,
|
||||||
attack_type = "dogfight",
|
attack_type = "dogfight",
|
||||||
dogshoot_switch = 1,
|
dogshoot_switch = 1,
|
||||||
dogshoot_count_max =0.5,
|
dogshoot_count_max =0.5,
|
||||||
blood_amount = 0,
|
|
||||||
fear_height = 4,
|
fear_height = 4,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
-- Returns a function that spawns children in a circle around pos.
|
-- Returns a function that spawns children in a circle around pos.
|
||||||
-- To be used as on_die callback.
|
-- To be used as on_die callback.
|
||||||
|
@ -60,7 +58,7 @@ end
|
||||||
local slime_big = {
|
local slime_big = {
|
||||||
type = "monster",
|
type = "monster",
|
||||||
pathfinding = 1,
|
pathfinding = 1,
|
||||||
group_attack = true,
|
group_attack = { "mobs_mc:slime_big", "mobs_mc:slime_small", "mobs_mc:slime_tiny" },
|
||||||
hp_min = 16,
|
hp_min = 16,
|
||||||
hp_max = 16,
|
hp_max = 16,
|
||||||
collisionbox = {-1.02, -0.01, -1.02, 1.02, 2.03, 1.02},
|
collisionbox = {-1.02, -0.01, -1.02, 1.02, 2.03, 1.02},
|
||||||
|
@ -68,7 +66,6 @@ local slime_big = {
|
||||||
textures = {{"mobs_mc_slime.png"}},
|
textures = {{"mobs_mc_slime.png"}},
|
||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_mc_slime.b3d",
|
mesh = "mobs_mc_slime.b3d",
|
||||||
blood_texture ="mobs_mc_slime_blood.png",
|
|
||||||
makes_footstep_sound = true,
|
makes_footstep_sound = true,
|
||||||
sounds = {
|
sounds = {
|
||||||
jump = "green_slime_jump",
|
jump = "green_slime_jump",
|
||||||
|
@ -96,9 +93,6 @@ local slime_big = {
|
||||||
death_start = 88,
|
death_start = 88,
|
||||||
death_end = 118,
|
death_end = 118,
|
||||||
},
|
},
|
||||||
water_damage = 0,
|
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
fall_damage = 0,
|
fall_damage = 0,
|
||||||
view_range = 16,
|
view_range = 16,
|
||||||
attack_type = "dogfight",
|
attack_type = "dogfight",
|
||||||
|
@ -108,14 +102,14 @@ local slime_big = {
|
||||||
run_velocity = 2.5,
|
run_velocity = 2.5,
|
||||||
walk_chance = 0,
|
walk_chance = 0,
|
||||||
jump_height = 5.2,
|
jump_height = 5.2,
|
||||||
jump_chance = 100,
|
fear_height = 0,
|
||||||
fear_height = 60,
|
|
||||||
spawn_small_alternative = "mobs_mc:slime_small",
|
spawn_small_alternative = "mobs_mc:slime_small",
|
||||||
on_die = spawn_children_on_die("mobs_mc:slime_small", 4, 1.0, 1.5)
|
on_die = spawn_children_on_die("mobs_mc:slime_small", 4, 1.0, 1.5)
|
||||||
}
|
}
|
||||||
mobs:register_mob("mobs_mc:slime_big", slime_big)
|
mobs:register_mob("mobs_mc:slime_big", slime_big)
|
||||||
|
|
||||||
local slime_small = table.copy(slime_big)
|
local slime_small = table.copy(slime_big)
|
||||||
|
slime_small.sounds.base_pitch = 1.15
|
||||||
slime_small.hp_min = 4
|
slime_small.hp_min = 4
|
||||||
slime_small.hp_max = 4
|
slime_small.hp_max = 4
|
||||||
slime_small.collisionbox = {-0.51, -0.01, -0.51, 0.51, 1.00, 0.51}
|
slime_small.collisionbox = {-0.51, -0.01, -0.51, 0.51, 1.00, 0.51}
|
||||||
|
@ -130,6 +124,7 @@ slime_small.on_die = spawn_children_on_die("mobs_mc:slime_tiny", 4, 0.6, 1.0)
|
||||||
mobs:register_mob("mobs_mc:slime_small", slime_small)
|
mobs:register_mob("mobs_mc:slime_small", slime_small)
|
||||||
|
|
||||||
local slime_tiny = table.copy(slime_big)
|
local slime_tiny = table.copy(slime_big)
|
||||||
|
slime_tiny.sounds.base_pitch = 1.3
|
||||||
slime_tiny.hp_min = 1
|
slime_tiny.hp_min = 1
|
||||||
slime_tiny.hp_max = 1
|
slime_tiny.hp_max = 1
|
||||||
slime_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505}
|
slime_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505}
|
||||||
|
@ -168,7 +163,6 @@ local magma_cube_big = {
|
||||||
textures = {{ "mobs_mc_magmacube.png" }},
|
textures = {{ "mobs_mc_magmacube.png" }},
|
||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_mc_magmacube.b3d",
|
mesh = "mobs_mc_magmacube.b3d",
|
||||||
blood_texture = "mobs_mc_magmacube_blood.png",
|
|
||||||
makes_footstep_sound = true,
|
makes_footstep_sound = true,
|
||||||
sounds = {
|
sounds = {
|
||||||
jump = "mobs_mc_magma_cube_big",
|
jump = "mobs_mc_magma_cube_big",
|
||||||
|
@ -204,6 +198,7 @@ local magma_cube_big = {
|
||||||
},
|
},
|
||||||
water_damage = 0,
|
water_damage = 0,
|
||||||
lava_damage = 0,
|
lava_damage = 0,
|
||||||
|
fire_damage = 0,
|
||||||
light_damage = 0,
|
light_damage = 0,
|
||||||
fall_damage = 0,
|
fall_damage = 0,
|
||||||
view_range = 16,
|
view_range = 16,
|
||||||
|
@ -212,8 +207,7 @@ local magma_cube_big = {
|
||||||
jump = true,
|
jump = true,
|
||||||
jump_height = 8,
|
jump_height = 8,
|
||||||
walk_chance = 0,
|
walk_chance = 0,
|
||||||
jump_chance = 100,
|
fear_height = 0,
|
||||||
fear_height = 100000,
|
|
||||||
spawn_small_alternative = "mobs_mc:magma_cube_small",
|
spawn_small_alternative = "mobs_mc:magma_cube_small",
|
||||||
on_die = spawn_children_on_die("mobs_mc:magma_cube_small", 3, 0.8, 1.5)
|
on_die = spawn_children_on_die("mobs_mc:magma_cube_small", 3, 0.8, 1.5)
|
||||||
}
|
}
|
||||||
|
@ -241,6 +235,7 @@ mobs:register_mob("mobs_mc:magma_cube_small", magma_cube_small)
|
||||||
local magma_cube_tiny = table.copy(magma_cube_big)
|
local magma_cube_tiny = table.copy(magma_cube_big)
|
||||||
magma_cube_tiny.sounds.jump = "mobs_mc_magma_cube_small"
|
magma_cube_tiny.sounds.jump = "mobs_mc_magma_cube_small"
|
||||||
magma_cube_tiny.sounds.death = "mobs_mc_magma_cube_small"
|
magma_cube_tiny.sounds.death = "mobs_mc_magma_cube_small"
|
||||||
|
magma_cube_tiny.sounds.base_pitch = 1.25
|
||||||
magma_cube_tiny.hp_min = 1
|
magma_cube_tiny.hp_min = 1
|
||||||
magma_cube_tiny.hp_max = 1
|
magma_cube_tiny.hp_max = 1
|
||||||
magma_cube_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505}
|
magma_cube_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505}
|
||||||
|
@ -270,14 +265,6 @@ mobs:spawn_specific("mobs_mc:magma_cube_small", mobs_mc.spawn.nether_fortress, {
|
||||||
mobs:spawn_specific("mobs_mc:magma_cube_big", mobs_mc.spawn.nether_fortress, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 11200, 4, mmin, mmax)
|
mobs:spawn_specific("mobs_mc:magma_cube_big", mobs_mc.spawn.nether_fortress, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 11200, 4, mmin, mmax)
|
||||||
|
|
||||||
|
|
||||||
-- Compability
|
|
||||||
mobs:alias_mob("mobs_mc:greensmall", "mobs_mc:slime_tiny")
|
|
||||||
mobs:alias_mob("mobs_mc:greenmedium", "mobs_mc:slime_small")
|
|
||||||
mobs:alias_mob("mobs_mc:greenbig", "mobs_mc:slime_big")
|
|
||||||
mobs:alias_mob("mobs_mc:lavasmall", "mobs_mc:magma_cube_tiny")
|
|
||||||
mobs:alias_mob("mobs_mc:lavamedium", "mobs_mc:magma_cube_small")
|
|
||||||
mobs:alias_mob("mobs_mc:lavabig", "mobs_mc:magma_cube_big")
|
|
||||||
|
|
||||||
-- spawn eggs
|
-- spawn eggs
|
||||||
mobs:register_egg("mobs_mc:magma_cube_big", S("Magma Cube"), "mobs_mc_spawn_icon_magmacube.png")
|
mobs:register_egg("mobs_mc:magma_cube_big", S("Magma Cube"), "mobs_mc_spawn_icon_magmacube.png")
|
||||||
mobs:register_egg("mobs_mc:slime_big", S("Slime"), "mobs_mc_spawn_icon_slime.png")
|
mobs:register_egg("mobs_mc:slime_big", S("Slime"), "mobs_mc_spawn_icon_slime.png")
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
--made for MC like Survival game
|
--made for MC like Survival game
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
local snow_trail_frequency = 0.5 -- Time in seconds for checking to add a new snow trail
|
local snow_trail_frequency = 0.5 -- Time in seconds for checking to add a new snow trail
|
||||||
|
|
||||||
local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false
|
local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false
|
||||||
|
local mod_throwing = minetest.get_modpath("mcl_throwing") ~= nil
|
||||||
|
|
||||||
local gotten_texture = {
|
local gotten_texture = {
|
||||||
"mobs_mc_snowman.png",
|
"mobs_mc_snowman.png",
|
||||||
|
@ -29,7 +29,7 @@ mobs:register_mob("mobs_mc:snowman", {
|
||||||
view_range = 10,
|
view_range = 10,
|
||||||
fall_damage = 0,
|
fall_damage = 0,
|
||||||
water_damage = 4,
|
water_damage = 4,
|
||||||
lava_damage = 20,
|
rain_damage = 4,
|
||||||
attacks_monsters = true,
|
attacks_monsters = true,
|
||||||
collisionbox = {-0.35, -0.01, -0.35, 0.35, 1.89, 0.35},
|
collisionbox = {-0.35, -0.01, -0.35, 0.35, 1.89, 0.35},
|
||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
|
@ -52,7 +52,12 @@ mobs:register_mob("mobs_mc:snowman", {
|
||||||
jump = true,
|
jump = true,
|
||||||
makes_footstep_sound = true,
|
makes_footstep_sound = true,
|
||||||
attack_type = "shoot",
|
attack_type = "shoot",
|
||||||
arrow = "mobs_mc:snowball_entity",
|
arrow = "mcl_throwing:snowball_entity",
|
||||||
|
shoot_arrow = function(self, pos, dir)
|
||||||
|
if mod_throwing then
|
||||||
|
mcl_throwing.throw("mcl_throwing:snowball", pos, dir, nil, self.object)
|
||||||
|
end
|
||||||
|
end,
|
||||||
shoot_interval = 1,
|
shoot_interval = 1,
|
||||||
shoot_offset = 1,
|
shoot_offset = 1,
|
||||||
animation = {
|
animation = {
|
||||||
|
@ -70,7 +75,6 @@ mobs:register_mob("mobs_mc:snowman", {
|
||||||
die_speed = 25,
|
die_speed = 25,
|
||||||
die_loop = false,
|
die_loop = false,
|
||||||
},
|
},
|
||||||
blood_amount = 0,
|
|
||||||
do_custom = function(self, dtime)
|
do_custom = function(self, dtime)
|
||||||
if not mobs_griefing then
|
if not mobs_griefing then
|
||||||
return
|
return
|
||||||
|
@ -120,8 +124,6 @@ mobs:register_mob("mobs_mc:snowman", {
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
rain_damage = 4,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
-- This is to be called when a pumpkin or jack'o lantern has been placed. Recommended: In the on_construct function
|
-- This is to be called when a pumpkin or jack'o lantern has been placed. Recommended: In the on_construct function
|
||||||
|
|
|
@ -3,11 +3,7 @@
|
||||||
--made for MC like Survival game
|
--made for MC like Survival game
|
||||||
--License for code WTFPL and otherwise stated in readmes
|
--License for code WTFPL and otherwise stated in readmes
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
--dofile(minetest.get_modpath("mobs").."/api.lua")
|
|
||||||
|
|
||||||
--###################
|
--###################
|
||||||
--################### SPIDER
|
--################### SPIDER
|
||||||
|
@ -42,7 +38,7 @@ local spider = {
|
||||||
},
|
},
|
||||||
walk_velocity = 3.9,
|
walk_velocity = 3.9,
|
||||||
jump = true,
|
jump = true,
|
||||||
jump_height = 2,
|
jump_height = 4,
|
||||||
view_range = 16,
|
view_range = 16,
|
||||||
floats = 1,
|
floats = 1,
|
||||||
drops = {
|
drops = {
|
||||||
|
@ -50,9 +46,6 @@ local spider = {
|
||||||
{name = mobs_mc.items.spider_eye, chance = 3, min = 1, max = 1,},
|
{name = mobs_mc.items.spider_eye, chance = 3, min = 1, max = 1,},
|
||||||
},
|
},
|
||||||
specific_attack = { "player", "mobs_mc:iron_golem" },
|
specific_attack = { "player", "mobs_mc:iron_golem" },
|
||||||
water_damage = 0,
|
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
fear_height = 4,
|
fear_height = 4,
|
||||||
animation = {
|
animation = {
|
||||||
stand_speed = 10,
|
stand_speed = 10,
|
||||||
|
@ -65,7 +58,6 @@ local spider = {
|
||||||
run_start = 0,
|
run_start = 0,
|
||||||
run_end = 20,
|
run_end = 20,
|
||||||
},
|
},
|
||||||
blood_amount = 0,
|
|
||||||
}
|
}
|
||||||
mobs:register_mob("mobs_mc:spider", spider)
|
mobs:register_mob("mobs_mc:spider", spider)
|
||||||
|
|
||||||
|
@ -85,10 +77,6 @@ mobs:register_mob("mobs_mc:cave_spider", cave_spider)
|
||||||
|
|
||||||
mobs:spawn_specific("mobs_mc:spider", mobs_mc.spawn.solid, {"air"}, 0, 7, 30, 17000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
|
mobs:spawn_specific("mobs_mc:spider", mobs_mc.spawn.solid, {"air"}, 0, 7, 30, 17000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.overworld_max)
|
||||||
|
|
||||||
-- compatibility
|
|
||||||
mobs:alias_mob("mobs:spider", "mobs_mc:spider")
|
|
||||||
mobs:alias_mob("esmobs:spider", "mobs_mc:spider")
|
|
||||||
|
|
||||||
-- spawn eggs
|
-- spawn eggs
|
||||||
mobs:register_egg("mobs_mc:spider", S("Spider"), "mobs_mc_spawn_icon_spider.png", 0)
|
mobs:register_egg("mobs_mc:spider", S("Spider"), "mobs_mc_spawn_icon_spider.png", 0)
|
||||||
mobs:register_egg("mobs_mc:cave_spider", S("Cave Spider"), "mobs_mc_spawn_icon_cave_spider.png", 0)
|
mobs:register_egg("mobs_mc:cave_spider", S("Cave Spider"), "mobs_mc_spawn_icon_cave_spider.png", 0)
|
||||||
|
|
|
@ -4,9 +4,7 @@
|
||||||
--################### SQUID
|
--################### SQUID
|
||||||
--###################
|
--###################
|
||||||
|
|
||||||
-- intllib
|
local S = minetest.get_translator("mobs_mc")
|
||||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
|
||||||
local S, NS = dofile(MP.."/intllib.lua")
|
|
||||||
|
|
||||||
mobs:register_mob("mobs_mc:squid", {
|
mobs:register_mob("mobs_mc:squid", {
|
||||||
type = "animal",
|
type = "animal",
|
||||||
|
@ -16,7 +14,7 @@ mobs:register_mob("mobs_mc:squid", {
|
||||||
hp_max = 10,
|
hp_max = 10,
|
||||||
armor = 100,
|
armor = 100,
|
||||||
-- FIXME: If the squid is near the floor, it turns black
|
-- FIXME: If the squid is near the floor, it turns black
|
||||||
collisionbox = {-0.4, 0.1, -0.4, 0.4, 0.9, 0.4},
|
collisionbox = {-0.4, 0.0, -0.4, 0.4, 0.9, 0.4},
|
||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_mc_squid.b3d",
|
mesh = "mobs_mc_squid.b3d",
|
||||||
textures = {
|
textures = {
|
||||||
|
@ -42,20 +40,17 @@ mobs:register_mob("mobs_mc:squid", {
|
||||||
min = 1,
|
min = 1,
|
||||||
max = 3,},
|
max = 3,},
|
||||||
},
|
},
|
||||||
visual_size = {x=1.75, y=1.75},
|
visual_size = {x=3, y=3},
|
||||||
makes_footstep_sound = false,
|
makes_footstep_sound = false,
|
||||||
stepheight = 0.1,
|
stepheight = 0.1,
|
||||||
fly = true,
|
fly = true,
|
||||||
fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source },
|
fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source },
|
||||||
|
breathes_in_water = true,
|
||||||
jump = false,
|
jump = false,
|
||||||
fall_speed = 0.5,
|
fall_speed = 0.5,
|
||||||
view_range = 16,
|
view_range = 16,
|
||||||
water_damage = 0,
|
|
||||||
lava_damage = 4,
|
|
||||||
light_damage = 0,
|
|
||||||
runaway = true,
|
runaway = true,
|
||||||
fear_height = 4,
|
fear_height = 4,
|
||||||
blood_texture = "mobs_mc_squid_blood.png",
|
|
||||||
})
|
})
|
||||||
|
|
||||||
-- TODO: Behaviour: squirt
|
-- TODO: Behaviour: squirt
|
||||||
|
@ -66,8 +61,5 @@ local water = mobs_mc.spawn_height.water
|
||||||
--name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height
|
--name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height
|
||||||
mobs:spawn_specific("mobs_mc:squid", mobs_mc.spawn.water, {mobs_mc.items.water_source}, 0, minetest.LIGHT_MAX+1, 30, 5500, 3, water-16, water)
|
mobs:spawn_specific("mobs_mc:squid", mobs_mc.spawn.water, {mobs_mc.items.water_source}, 0, minetest.LIGHT_MAX+1, 30, 5500, 3, water-16, water)
|
||||||
|
|
||||||
-- compatibility
|
|
||||||
mobs:alias_mob("mobs:squid", "mobs_mc:squid")
|
|
||||||
|
|
||||||
-- spawn eggs
|
-- spawn eggs
|
||||||
mobs:register_egg("mobs_mc:squid", S("Squid"), "mobs_mc_spawn_icon_squid.png", 0)
|
mobs:register_egg("mobs_mc:squid", S("Squid"), "mobs_mc_spawn_icon_squid.png", 0)
|
||||||
|
|
Before Width: | Height: | Size: 86 B |