Compare commits

...

1273 Commits

Author SHA1 Message Date
Gerold55 0ac68d7f5d Update brown mooshroom 2019-03-01 06:26:34 +00:00
Gerold55 fab40ce68d Update 'mods/ITEMS/mcl_banners/init.lua' 2019-03-01 05:00:02 +00:00
Gerold55 1c835381b4 Upload files to 'mods/ITEMS/mcl_banners/textures' 2019-03-01 04:58:30 +00:00
Wuzzy 19b1cf5986 More robust initialization of chests of structs 2019-02-28 18:19:57 +01:00
Wuzzy 1daf9b7a59 Put treasure loot into random inventory slots 2019-02-28 18:00:17 +01:00
Wuzzy 7851cee45e Fix exhauston for attacking and taking dmg 2019-02-28 16:43:52 +01:00
nickolas360 6497916ade Fix spawning at bed when chunk is unloaded 2019-02-28 15:35:18 +01:00
Wuzzy 1044e96909 Add tool groups (pickaxe, shovel, ...) 2019-02-25 17:46:49 +01:00
Wuzzy 1556e6cb3e Ice: Use after_dig_node instead of after_destruct 2019-02-22 06:13:31 +01:00
Wuzzy 6e8be2a2c3 Fix vine not dropping all vines when dug w/ shears 2019-02-22 06:08:48 +01:00
Wuzzy e614f9228a Version 0.46.0 2019-02-21 23:08:51 +01:00
Wuzzy 236ef99359 Add hard limits to book title and book text length 2019-02-21 18:08:30 +01:00
Wuzzy 93c087997f Add /lightning command 2019-02-21 03:36:02 +01:00
Wuzzy 31668cdde5 Add brown mooshroom 2019-02-21 02:38:33 +01:00
Wuzzy 0085122028 Slightly rewrite a bed formspec string 2019-02-20 21:09:04 +01:00
Wuzzy 99741f3d2a Beds: Update formspecs when player leaves/joins 2019-02-20 21:03:25 +01:00
Wuzzy 686b575f81 Beds: Fix player model offset when laying down 2019-02-20 20:59:01 +01:00
Wuzzy 7678a1a95f Beds: Fix kick_players_afeter_destruct 2019-02-20 20:52:06 +01:00
Wuzzy 8c672fa3b2 Tweak messages in mcl_beds 2019-02-20 20:45:55 +01:00
Wuzzy 88872c8ce2 Can't sleep in occupied beds 2019-02-20 20:40:06 +01:00
Wuzzy 079b09c80f Explicit msgs when respawn pos changed due to bed 2019-02-20 19:43:02 +01:00
Wuzzy ec53db9352 Beds can save spawn pos at daytime, too 2019-02-20 19:22:24 +01:00
Wuzzy 0cc8962258 Fix stuck player if server shuts down during sleep 2019-02-20 18:21:08 +01:00
Wuzzy f18b1bd52a Kick player out of bed when bed destroyed 2019-02-20 18:01:21 +01:00
Wuzzy 942b9468ff Simplify bed help a bit 2019-02-20 17:45:35 +01:00
Wuzzy b481eadafd Beds: Show message when night skip is disabled 2019-02-20 17:32:22 +01:00
Wuzzy cb2978470c Improve bed formspec 2019-02-20 17:11:45 +01:00
Wuzzy 3b8fe6039e Don't skip night if not all players are asleep 2019-02-20 16:18:13 +01:00
Wuzzy 8982e368ec Abort sleep if taking damage 2019-02-20 16:09:39 +01:00
Wuzzy 38f6804a79 Update tsm_railcorridors to 0.14.0 2019-02-19 20:16:12 +01:00
Wuzzy c1bc7a8fae Chorus fruit keeps u safe from damaging blocks 2019-02-19 03:42:50 +01:00
Wuzzy a1ce94eee5 Add comment to mcl_itemframes 2019-02-19 00:06:47 +01:00
Wuzzy e5c78973b0 Respawn mobspawner doll on load, if gone mobspawner doll on load, if gone mobspawner doll on load, if gone mobspawner doll on load, if gone 2019-02-19 00:06:14 +01:00
Wuzzy e332c64d2a Respawn armor entity of armor stand on load 2019-02-18 23:56:11 +01:00
Wuzzy 267a697fab Banners: Respawn entity if it got lost
Entity is respawned on load (in an LBM) or when the banner node is punched.
Also, the banner drop is now handled in the node instead of the entity.
2019-02-18 23:32:18 +01:00
Wuzzy eb7c8371ac Respawn itemframe entities on load 2019-02-18 21:58:31 +01:00
Wuzzy 198adcc740 Respawn sign text on load 2019-02-18 21:58:17 +01:00
Wuzzy 37b9a8f6bf Fix incorrect text rotation when sign text updates 2019-02-18 20:59:25 +01:00
Wuzzy d0e3862356 Fix bad wall sign text update after punch 2019-02-18 20:52:44 +01:00
Wuzzy 46a6d9bb8e Signs: Remove dead code 2019-02-18 20:14:30 +01:00
Wuzzy aa3739528b Fix weird arguments given to is_protected 2019-02-11 21:27:17 +01:00
Wuzzy dee5f3bda6 Version 0.45.1 2019-02-11 20:04:30 +01:00
Wuzzy 0f134426e8 Fix protection-related crash when taking liquid 2019-02-11 20:03:56 +01:00
Wuzzy f985aab191 Version 0.45.0 2019-02-11 18:58:14 +01:00
Wuzzy 2d721a98cb Call on_drop for dropped items on player death
Fixes charged bow dropping on death
2019-02-11 18:55:48 +01:00
Wuzzy 2ffd16377b Update playerphysics README 2019-02-11 17:48:49 +01:00
Wuzzy 1cbbe8f4b1 Refactor playerphysics init 2019-02-11 17:45:42 +01:00
Wuzzy 49949e2f36 Don't allow to go to bed while player moves 2019-02-11 16:14:08 +01:00
Wuzzy 5a7952bf92 Set mob spawn chance to 2.5 and fix player respawn msg 2019-02-11 15:51:30 +01:00
Wuzzy 9e57828958 Add tileable_vertical to covered dirt nodes 2019-02-09 21:28:53 +01:00
Wuzzy e28f213f9a Add workaround to fix broken double plants in v6 2019-02-09 06:08:35 +01:00
Wuzzy e89a01630b Remove misunderstood replacements from decorations
I thought it would replace nodes on the map, but it turned it it replaces nodes from the schematic definition.
2019-02-09 04:32:55 +01:00
Wuzzy d50ff26118 Rename setting: mob_spawn_multiplier → mobs_spawn_chance 2019-02-09 03:11:15 +01:00
Wuzzy 3ec7914962 Allow to use Minetest's original flat mapgen again 2019-02-09 03:07:18 +01:00
Wuzzy 3ba4aabbcf Check for protection when using anvil formspec 2019-02-09 00:17:25 +01:00
Wuzzy 986871f2b5 No replace empty bottle if used on src in creative 2019-02-09 00:05:00 +01:00
Wuzzy 5b0945b88c Don't change water bottles when using in creative 2019-02-08 23:55:49 +01:00
Wuzzy 46c7413337 Bucket dispensers now ignore protection
Otherwise, it bucket dispensers would not work on your own property.
2019-02-08 23:29:12 +01:00
Wuzzy b729ffc604 Spawning fire now respects protection 2019-02-08 23:17:20 +01:00
Wuzzy 9817b38904 Fix bucket crash 2019-02-08 23:17:08 +01:00
Wuzzy a7d429a017 Fix several "undeclared global" errors 2019-02-08 22:44:26 +01:00
Wuzzy fb3db5077c Fix slime code using nil arguments 2019-02-08 22:27:45 +01:00
Wuzzy 79e5a6dfa3 Fix typo in 3d_armor_stand 2019-02-08 22:23:26 +01:00
Wuzzy c141f4ece5 Mobspawners: Remove unused function 2019-02-08 22:20:58 +01:00
Wuzzy 9a3c6a3fd7 Protect: add bottles, mobspawner, fix repeater 2019-02-08 22:17:51 +01:00
Wuzzy 312b17a958 Check protection for most nodes 2019-02-08 21:59:01 +01:00
Wuzzy bcf7125f9d Fix mob items not working without maphack priv 2019-02-08 17:55:14 +01:00
Wuzzy cb8e3fcf82 Fix bone meal failing to grow crops when it's dark 2019-02-08 05:36:43 +01:00
Wuzzy 7d0c647e8b Comment on beetroot seed probability 2019-02-08 05:30:05 +01:00
Wuzzy 36060dfb6a Converter: Add preview image, use proper folder name 2019-02-07 22:40:11 +01:00
Wuzzy 729c176ff4 Texture Converter: Add description.txt 2019-02-07 21:24:19 +01:00
Wuzzy 058cb2f1ee Rename farmland textures because of MTG clash 2019-02-07 20:06:02 +01:00
Wuzzy 5897d07435 Don't show bed msg if player respawns w/o bed 2019-02-07 19:54:12 +01:00
Wuzzy cfdcd63f3c Change dye texture names of "special" dyes 2019-02-07 07:10:10 +01:00
Wuzzy 77709c8076 Disable fish achievement 2019-02-07 06:35:32 +01:00
Wuzzy d59d789c80 Put boat/minecart in inv when punched in creative 2019-02-06 21:56:52 +01:00
Wuzzy 4bd9be22e0 Apply eat effect when hunger disabled 2019-02-06 21:23:05 +01:00
Wuzzy 93c86207d9 Fix crash when using milk if damage is disabled 2019-02-06 20:04:45 +01:00
Wuzzy 371bc0cb76 Creative categories: book, chorusfruit, endpearl 2019-02-06 12:04:58 +01:00
Wuzzy 3976c7c4b9 Add doors and trapdoors to decoration blocks 2019-02-06 11:40:51 +01:00
Wuzzy 069f3591e2 Add mobs page in creative inventory 2019-02-06 11:31:04 +01:00
Wuzzy 27fa2c2e66 Clean up item categorization in creative inv. 2019-02-06 11:15:53 +01:00
Wuzzy 66c99efb2f Hide "useless" items from creative and craft guide 2019-02-06 10:57:23 +01:00
Wuzzy 37b9b6fbfc If mob jumped against wall 4 times, turn around 2019-02-06 08:51:09 +01:00
Wuzzy d4fe313077 Mobs: Fix line-of-sight handling (thanks, chon!) 2019-02-06 08:27:14 +01:00
Wuzzy b6c21ee841 Make in-water color less opaque 2019-02-06 08:08:51 +01:00
Wuzzy 62159b0aa0 Core mapgen: Extend some stuff to emin,emax 2019-02-06 04:32:20 +01:00
Wuzzy da625b569a Spawn minecarts in railcorridor chests 2019-02-06 03:00:45 +01:00
Wuzzy 9105f248b4 More secure igloo generation 2019-02-06 02:23:51 +01:00
Wuzzy 6ff637ec69 Add more igloo generation code 2019-02-06 02:02:18 +01:00
Wuzzy 0876e76b40 Fix crash when using chorus fruit on cake 2019-02-05 22:05:56 +01:00
Wuzzy 9ed83bd196 Drop food eating limits in Creative Mode 2019-02-05 21:51:40 +01:00
Wuzzy d9b6bae320 mcl_hunger: core.* → minetest.* 2019-02-05 21:14:28 +01:00
Wuzzy 0068508968 Don't add weapon wear in Creative Mode 2019-02-05 21:11:37 +01:00
Wuzzy 3563b5448c Slime: Don't add speed if mother was stuck 2019-02-05 21:02:36 +01:00
Wuzzy 958989c80d If slime/mcube was killd, smaller m. att. attacker
Previously, if you killed a big slime, the smaller slimes that spawn are neutral.
2019-02-05 20:49:34 +01:00
Wuzzy ca484cfa1a Improve child spawn on slime/magmacube death
No longer do children spawn in walls
2019-02-05 20:19:06 +01:00
Wuzzy 1c35828fa2 Fix stupid mob spawn height 2019-02-05 19:24:02 +01:00
Wuzzy cfd5615548 Spawn smaller slime/magmacube if it doesn't fit 2019-02-05 19:12:28 +01:00
Wuzzy b7a2fba1ce Fix spawn ABM check that prevented squid spawn 2019-02-05 17:43:18 +01:00
Wuzzy 64457b151c Improve free space checks on mob spawn 2019-02-05 17:05:40 +01:00
Wuzzy f63342ec72 Rename seed textures 2019-02-05 04:06:28 +01:00
Wuzzy 7437d3945b Forget spawn if bed was destroyed 2019-02-05 00:07:39 +01:00
Wuzzy 6faac04f0d Prevent sleeping if solid or damage block over bed 2019-02-04 17:53:30 +01:00
Wuzzy a11f6ffaac Don't respawn on bed if bed is missing or blocked 2019-02-04 16:58:28 +01:00
Wuzzy a285827980 Change powered rail texture names to fix MTG clash 2019-02-04 12:38:36 +01:00
Wuzzy 4f2cd559da Rename textures that clash with MTG
cactus, hotbar, some wools
2019-02-04 12:21:58 +01:00
Wuzzy f23fa236dd Update deprecated function call in mesecons_mvps 2019-02-02 00:13:18 +01:00
Wuzzy 6fbefaef09 Version 0.44.0 2019-02-01 22:18:47 +01:00
Wuzzy a918696509 Revert "Update fire help"
This reverts commit 954125f6e2.
2019-02-01 22:17:42 +01:00
Wuzzy 954125f6e2 Update fire help 2019-02-01 08:42:23 +01:00
Wuzzy 0586c0ea18 Destroy items in fire 2019-02-01 08:31:17 +01:00
Wuzzy 29040f9352 Add magma cube sounds 2019-02-01 08:13:45 +01:00
Wuzzy e789801662 Replace getpos() with get_pos() 2019-02-01 06:33:07 +01:00
Wuzzy 1f1361d179 Add paramtype="light" to lava ... 2019-02-01 06:23:12 +01:00
Wuzzy e64518dd24 Fix crash when creating Nether portal 2019-02-01 01:21:08 +01:00
Wuzzy 8ff69dda0c Despawn animals, too 2019-01-31 22:00:43 +01:00
Wuzzy 0a803400fe Mobs: Disable war_cry sound for now 2019-01-31 07:57:03 +01:00
Wuzzy 27823dbbb3 Remove frustration mob sound 2019-01-31 07:45:42 +01:00
Wuzzy 139b1000ff Implement mob suffocation 2019-01-31 07:23:35 +01:00
Wuzzy c9fb060ea0 Tweak zombie growl sound occurence 2019-01-31 07:20:51 +01:00
Wuzzy e1e7d5215e Add more mob sound cooloffs 2019-01-31 06:31:04 +01:00
Wuzzy 626f7f6e97 Delete senseless argument in minetest.remove_node 2019-01-31 05:32:10 +01:00
Wuzzy a2b39ed943 Mobs: Prevent jump sound spam 2019-01-31 02:44:05 +01:00
Wuzzy 7465d7a107 Fix stained glass not propagating sunlight 2019-01-30 04:54:30 +01:00
Wuzzy d34c48cb59 Insta-drop minecart when its rail is destroyed 2019-01-30 03:37:47 +01:00
Wuzzy 6748576f8e Increase minecart floating check timer 2019-01-30 03:37:23 +01:00
Wuzzy 1966d18586 Drop minecart as item if its not on a rail anymore 2019-01-30 03:16:59 +01:00
Wuzzy e42945a4e1 Minecarts: Reset eye offset when detaching player 2019-01-30 02:41:24 +01:00
Wuzzy 5a1cafa5dd Minecarts: Save _railtype in staticdata 2019-01-30 02:04:12 +01:00
Wuzzy b9c197565a Minecarts: Init _railtype on placement 2019-01-30 01:58:26 +01:00
Wuzzy b23b9a9395 Add silverfish sounds (thanks, Inocodum!) 2019-01-28 22:13:35 +01:00
Wuzzy c40cd5dbb7 Clarify official version support 2019-01-28 21:06:56 +01:00
Wuzzy 3bcc2c2693 Make mob knockback weaker 2019-01-28 00:55:41 +01:00
Wuzzy 8f7303d540 Lookup tool opens help page when using it on mobs 2019-01-28 00:04:12 +01:00
Wuzzy 2402507808 Restructure settingtypes.txt, add mob settings 2019-01-20 20:57:46 +01:00
Wuzzy 56ff8fbad5 Hide repair recipes if disable_repair=1 is set 2019-01-12 05:41:36 +01:00
Wuzzy 68c373d2b8 Add a couple of modpack.conf files 2019-01-07 00:52:05 +01:00
Wuzzy 907476fa86 Add game description 2019-01-07 00:44:26 +01:00
Wuzzy fa3fd68c8c Turn enderman to monster, but reduce view range 2018-12-22 14:29:45 +01:00
Wuzzy e1870c2808 Fix typo: Diamond Leggins 2018-12-17 01:57:25 +01:00
Wuzzy 037a8333a0 Version 0.43.0 2018-12-07 21:46:28 +01:00
Wuzzy 68eea10597 Update mcl_walls API docs 2018-12-07 21:43:12 +01:00
Wuzzy e38fadd863 Remove packed ice crafting recipe for now
Ice cannot be obtained legally yet (missing silk touch).
2018-12-07 21:37:52 +01:00
Wuzzy 502be105ac Apply disable_repair group 2018-12-07 21:25:15 +01:00
Wuzzy af3785021b Describe purpur_block group 2018-12-07 21:20:15 +01:00
Wuzzy 2ff1372b1e Fix nether brick fence crafting 2018-12-03 17:38:32 +01:00
Wuzzy 367469cf90 Simplify wall registration 2018-12-03 17:30:09 +01:00
Wuzzy 6fdf57d44f Move stuff from mclx_stairs to mcl_stairs 2018-12-03 17:24:44 +01:00
Wuzzy ff9032754a Add many more walls 2018-12-03 17:15:16 +01:00
Wuzzy c988665b5c Use word "Stairs" instead of "Stair" consistently 2018-12-03 16:50:12 +01:00
Wuzzy 5b6ae370e2 Make smooth stone cookable 2018-12-03 16:47:11 +01:00
Wuzzy b60c762ac3 Add more stairs/slabs
- andesite/diorite/granite
- stone (real stone texture)
- smooth sandstone/red sandstone/quartz
2018-12-03 16:43:23 +01:00
Wuzzy e4c5a78592 Use group:purpur to craft purpur stair/slab 2018-12-03 16:15:22 +01:00
Wuzzy ec8d43b4a3 Make packed ice craftable 2018-12-03 16:06:22 +01:00
Wuzzy 25b65e4b7d Remove tsm_railcorridors_probability_cart for now 2018-11-17 15:59:01 +01:00
Wuzzy 4703ca9ae6 Tweak inventory image of internal comparator items 2018-10-24 18:22:48 +02:00
Wuzzy b5f9a755b3 Tweak item names and images of farming plants 2018-10-24 18:16:39 +02:00
Wuzzy 001b0cc49f Update doc_items (fake items) 2018-10-24 01:46:43 +02:00
Wuzzy e09955f0fb Add description.txt for playerphysics 2018-10-23 18:58:23 +02:00
Wuzzy 45ce08b147 Mention playerphysics in API.md 2018-10-23 18:56:10 +02:00
Wuzzy 2ff543a7bc Add playerphysics version number 2018-10-23 18:53:36 +02:00
Wuzzy b076bafaa7 Rename mcl_playerphysics to playerphysics 2018-10-23 18:51:19 +02:00
Wuzzy e0fe5b2c66 Disable zombie war_cry sound for now 2018-10-23 17:34:01 +02:00
Wuzzy a88429a78e Fix missing zombie growl 2018-10-23 17:13:22 +02:00
Wuzzy 22f0cf1866 Version 0.42.1 2018-10-23 17:04:37 +02:00
Wuzzy d1fb01c2ff Fix crash if trading with cleric in non-v6 mapgen 2018-10-23 17:03:42 +02:00
Wuzzy 26838fb2d6 Version 0.42.0 2018-09-18 22:27:24 +02:00
Wuzzy 6dbbca4bec Fix mobs_mc_vex_death.ogg being stereo 2018-09-18 21:39:03 +02:00
Wuzzy 92dca4850a Add new cat/ocelot sounds 2018-09-18 21:21:05 +02:00
Wuzzy a3d798ca13 Fix mobs playing damage sound when they healed 2018-09-18 20:08:03 +02:00
Wuzzy 5d6d1cf790 Add bat sound 2018-09-18 19:46:44 +02:00
Wuzzy fd33d9d2ec Add creeper and vex sounds 2018-09-18 16:14:55 +02:00
Wuzzy 8b38a169e6 Add basic horse sounds 2018-09-18 14:49:28 +02:00
Wuzzy e422e47ada Add crazy coo hurt/death sounds 2018-09-14 17:37:24 +02:00
Wuzzy 900625b17b Add ghast shoot/death sound, add many sound TODOs 2018-09-14 16:27:58 +02:00
Wuzzy 7d66d5f2d3 Remove unused arrow code for wither skeleton 2018-09-14 16:08:32 +02:00
Wuzzy 26a5059cc0 Add bow shooting sound when mob fires an arrow 2018-09-14 16:07:22 +02:00
Wuzzy 077cd14f4f Add skeleton sounds 2018-09-14 15:58:31 +02:00
Wuzzy ad2fbb0008 Add some despawning logic (but do not enable despawning yet) 2018-09-14 14:48:48 +02:00
MysticTempest 67ebf3366f Make player sit in minecarts 2018-07-09 23:45:54 +02:00
MysticTempest 5d4b4b099c Fix snowman's head texture 2018-07-09 23:33:32 +02:00
Wuzzy 5e31db04d7 Version 0.41.3 2018-07-04 01:53:37 +02:00
Wuzzy ce04c81482 Fix another crash in mcl_mobs 2018-07-04 01:53:08 +02:00
Wuzzy 675185ac02 Version 0.41.2 2018-07-02 23:40:45 +02:00
Wuzzy f7227de6fa Local variable fix in mcl_mobs 2018-07-02 23:34:40 +02:00
Wuzzy 61c5c61e00 Fix crash when using nametag 2018-07-02 23:27:11 +02:00
Wuzzy b2fa90cae7 Update bug tracker URL (git.minetest.land) 2018-06-22 13:05:07 +02:00
Wuzzy a88f644001 Update deprecated settings syntax 2018-06-20 19:02:52 +02:00
Wuzzy 94d4ad99f4 Version 0.41.1 2018-06-18 13:13:34 +02:00
Wuzzy d34d368306 Disable double doors because of bug on place 2018-06-15 21:26:15 +02:00
Wuzzy fe60b2c8bb More Nether portal generating refactor stuff 2018-06-15 19:15:39 +02:00
Wuzzy c1614dabc5 Rewrite emerge algorithm of Netherportal gen. 2018-06-15 19:07:20 +02:00
Wuzzy f68e835087 Fix Nether portal not teleporting players anymore 2018-06-15 18:26:59 +02:00
Wuzzy 801e6fb1c4 Mesecons: Stop using deprecated settings syntax 2018-06-13 19:41:57 +02:00
Wuzzy 5c2dd37528 Fix crash if dropping charged bow 2018-06-13 17:20:10 +02:00
Wuzzy 857dddab3b Version 0.41.0 2018-06-12 16:20:00 +02:00
Wuzzy 2bb8b2c4e2 Fix undeclared global fail in villager.lua 2018-06-11 14:47:41 +02:00
Wuzzy a6bb31f2a6 Fix explo mobs destroy land if mobs_griefing=false 2018-06-10 16:09:28 +02:00
Wuzzy 45add3cedd Add creamy horse texture 2018-06-10 15:51:03 +02:00
Wuzzy fe0f4df958 Remove WIP mark from villagers 2018-06-10 15:32:50 +02:00
Wuzzy e051eae5bc Lightning no longer turns villagers to witches
Because witches are incomplete.
Also add villager TODOs.
2018-06-10 15:27:01 +02:00
Wuzzy a804144ed4 Trading: Make iron helmet cheaper 2018-06-10 15:09:52 +02:00
Wuzzy 9faa3099a4 Trader: Close trade formspec + return items on die 2018-06-10 15:01:44 +02:00
Wuzzy aa3d3969aa Make villager stand still if there is near player 2018-06-10 14:24:00 +02:00
Wuzzy dbed565197 Fix unlock_stuff being always false in villager 2018-06-10 13:53:26 +02:00
Wuzzy 51ff6b1725 Villager: Prevent locking of all trades
This is done by adding an "emergency unlock" which unlocks
everything else when the last trade was locked.
2018-06-10 13:49:35 +02:00
Wuzzy ed52e49408 Heal trader for unlocking trades 2018-06-10 13:20:19 +02:00
Wuzzy 3e8ca5a1ca Trading: Hide left/right button if end of list 2018-06-10 13:06:28 +02:00
Wuzzy cca841e459 Villager trading: Use per-player trading inventory 2018-06-10 12:15:09 +02:00
Wuzzy 9f2460c263 Make red sandstone trade earlier 2018-06-06 21:29:44 +02:00
Wuzzy ce7ac37e85 Add a few v6-exclusive trades to villagers 2018-06-06 21:28:23 +02:00
Wuzzy 5faed5d7f0 Add 2 crosses in trading formspec 2018-06-06 19:50:17 +02:00
Wuzzy 4d4374730e Trading: Allow to sell compass 2018-06-06 19:37:31 +02:00
Wuzzy 3823a6ba11 Add trade locking for villagers 2018-06-06 17:33:14 +02:00
Wuzzy 8b95871682 Implement trading tier unlocking 2018-06-06 16:34:44 +02:00
Wuzzy 1db3b079c6 Add disabled trade image 2018-06-06 14:39:16 +02:00
Wuzzy 2c55daa3e2 Change nitwit villager texture 2018-06-06 14:12:27 +02:00
Wuzzy 829ca1f1c1 Villager profession depends on clothes, add nitwit 2018-06-06 13:55:19 +02:00
Wuzzy f545af54c1 Disable buggy compass trade 2018-06-06 01:08:57 +02:00
Wuzzy 1c0e026259 Villager: Fix taking output sometimes destroy item 2018-06-06 00:45:30 +02:00
Wuzzy 3c4a1013b8 Villager: Prevent taking partial track from output 2018-06-06 00:16:25 +02:00
Wuzzy 7a080ac308 Fix up/down observers dropping themselves 2018-06-05 19:27:18 +02:00
Wuzzy 1e72dd6b33 More Texture Converter clarification 2018-06-05 02:03:07 +02:00
Wuzzy 58df62ec8c Add encoding definition to Texture Converter 2018-06-05 01:58:40 +02:00
Wuzzy 1752e29f2d Update Texture Converter README again 2018-06-05 01:58:23 +02:00
Wuzzy 309dc40484 Fix typos in Texture Converter 2018-06-05 01:53:59 +02:00
Wuzzy 0e00c85f99 Add README into tools directory 2018-06-05 01:44:57 +02:00
Wuzzy 64fe90257d Version 0.40.0 2018-06-04 22:27:03 +02:00
Wuzzy b504e8c317 Make trader warning less bright 2018-06-04 22:23:46 +02:00
Wuzzy 6e32d23d56 Add warnings and notes about trading implementation 2018-06-04 22:21:10 +02:00
Wuzzy a58a01040d Show villager name in trading formspec 2018-06-04 22:13:24 +02:00
Wuzzy 9bfa116794 Allow to select different trades 2018-06-04 21:46:13 +02:00
Wuzzy e9bcbe1ead Store available trades in villager entity 2018-06-04 21:07:12 +02:00
Wuzzy cc1fe2f14f Fix bread trade 2018-06-04 15:21:59 +02:00
Wuzzy 10e2c174d4 Pick random villager profession on spawn 2018-06-04 14:59:10 +02:00
Wuzzy f1dc75f097 Add lots of random trades for villagers 2018-06-04 14:36:06 +02:00
Wuzzy 7109db24c2 Trading: Reset inventory when closing formspec 2018-06-04 12:50:31 +02:00
Wuzzy a9cf744c0b Disable villager trading again 2018-06-04 01:20:24 +02:00
Wuzzy e5c7e50202 More villager fixing 2018-06-04 01:19:23 +02:00
Wuzzy 883568add4 Implement basic villager trading formspec 2018-06-03 18:37:53 +02:00
Wuzzy 2dbda44a93 Add some global spawn restrictions
- no monsters on mycelium
- nothing on non-opaque blocks, except air
2018-06-03 17:48:32 +02:00
Wuzzy f022b747b0 Harden a number of minetest.after player checks 2018-06-03 16:44:37 +02:00
Wuzzy 2132cdacc5 Improve minetest.after checks 2018-06-03 16:17:55 +02:00
Wuzzy 201c2bf170 Fix minetest.after crashes in mcl_mobs 2018-06-03 16:13:46 +02:00
Wuzzy 9c6f5b3573 Remove dead code in mcl_mobs 2018-06-03 00:56:29 +02:00
Wuzzy 1d04b52b5a Name tag: Update texture conversion and add alias 2018-05-31 18:40:02 +02:00
Wuzzy 34e92a361b Rename mobs mod to mcl_mobs 2018-05-31 18:32:26 +02:00
Wuzzy dafba9a07c Update global API.md wrt MRM 2018-05-31 18:04:07 +02:00
Wuzzy 4be664ab49 Rebranding of the mobs redo mod 2018-05-31 17:54:35 +02:00
Wuzzy 9afe5da7b4 Make sure bred pig and sheep stay tamed and owned 2018-05-31 17:32:13 +02:00
Wuzzy c55714ea0c Reduce dependencies of mcl_anvils 2018-05-31 15:18:48 +02:00
Wuzzy 2f0987b529 Move mcl_void_damage to ENVIRONMENT 2018-05-31 15:13:16 +02:00
Wuzzy d5729b8a32 Fix load-crash if _magnet_timer of item entity is uninizialized 2018-05-31 14:34:19 +02:00
Wuzzy 73dcf1e697 Randomly mutate foal fur/mark with 1/9 chance each 2018-05-31 14:05:45 +02:00
Wuzzy aeee941b2c Breeding sheep now mixes wool colors like dyes 2018-05-31 05:45:57 +02:00
Wuzzy e246b5d0bb Fix breeding giving weird childs 2018-05-31 04:38:37 +02:00
Wuzzy 97e550bb9f Can't shear lambs 2018-05-31 03:45:38 +02:00
Wuzzy 55beefa6c7 Fix wool regrow for sheep 2018-05-31 03:43:48 +02:00
Wuzzy 91b41885d5 Tweak blaze animation 2018-05-31 03:17:41 +02:00
Wuzzy 4513c6c35d Undead mobs take light damage only in sunlight 2018-05-31 03:09:27 +02:00
Wuzzy b73e05d64a Fix light_damage damaging mobs in rain/snow 2018-05-31 02:47:37 +02:00
Wuzzy eefd065726 New horse texturing (thanks to 22i) 2018-05-30 19:51:40 +02:00
Wuzzy 293caa511f Fix broken zombie villager texture conversion 2018-05-30 18:55:37 +02:00
Wuzzy 050987bead Add illagers to Conversion Table 2018-05-30 18:48:07 +02:00
Wuzzy 8b6f5d3dec Redo sheep texturing
Thanks to 22i
2018-05-30 18:05:49 +02:00
Wuzzy c10f4311f7 Update death animations of some mobs 2018-05-30 17:34:38 +02:00
Wuzzy 895d06d28a Update (wither) skeleton mesh and anim (thx 2 22i) 2018-05-30 17:11:07 +02:00
Wuzzy 5d92c04a36 Update Conversion Table 2018-05-30 17:02:28 +02:00
Wuzzy 328eb883ec Redo skeleton stray vex zombiepig meshes/textures
Thanks, 22i!
2018-05-30 16:59:27 +02:00
Wuzzy 6619cf159f New zombie pigman mesh by 22i 2018-05-30 16:41:28 +02:00
Wuzzy 635a9c45bd Enable wolf-on-sheep attack 2018-05-30 16:16:44 +02:00
Wuzzy 222f6880cb Protect doors from screwdriver rotation 2018-05-30 14:24:37 +02:00
Wuzzy 76c1c10a9b Tweak snowman animation params 2018-05-30 13:33:19 +02:00
Wuzzy 17b9bd27de Redo snowman texturing (thanks, 22i!) 2018-05-30 13:29:33 +02:00
Wuzzy b2d9c119ac Add mobs:spawn_child 2018-05-30 12:58:50 +02:00
Wuzzy 940b3748fb Fix horse child keeping horse armor of parent 2018-05-30 12:34:16 +02:00
Wuzzy 806e392d31 Fix child of saddled pigs getting saddle, too 2018-05-30 12:25:10 +02:00
Wuzzy d575cf07b7 Kill snow golems in rain 2018-05-30 12:01:53 +02:00
Wuzzy 69b3e19c1b Name tags now name all mobs (except ender dragon) 2018-05-30 11:34:17 +02:00
Wuzzy d0cdb0f390 Add fake_liquid group to cobweb 2018-05-29 20:11:27 +02:00
Wuzzy c1cc790d9d Update Mobs Redo (1.41) 2018-05-29 17:00:30 +02:00
Wuzzy 34292ece10 Fix minor texture fail for woodlike corner stair 2018-05-29 16:03:10 +02:00
Wuzzy f3b0cf6f3e Document API mcl_stairs, declare mcl_stairs usable 2018-05-29 15:17:15 +02:00
Wuzzy d3f5942d7d Improve corner stair texturing 2018-05-29 14:28:26 +02:00
Wuzzy 85975a2d26 mcl_stairs: Add woodlike cornerstair mode 2018-05-29 13:46:39 +02:00
Wuzzy 644387c0ad Remove redundant wood stair register 2018-05-29 13:30:23 +02:00
Wuzzy cf8415f87a Merge mcstair into mcl_stairs 2018-05-29 13:25:25 +02:00
Wuzzy eb02e9f3e1 Version 0.39.0 2018-05-28 19:18:12 +02:00
Wuzzy f8362e798f Make v6 ice spikes much rarer 2018-05-28 16:32:15 +02:00
Wuzzy c4ced1fbdf Fix arrows being punchable to death 2018-05-28 15:49:04 +02:00
Wuzzy 187e6b7e58 Remove water damage from creeper 2018-05-27 10:41:50 +02:00
Wuzzy fc94f50e6a Fix another logic fail in arrow mob detect code 2018-05-27 10:33:49 +02:00
Wuzzy 6f24a44e53 Merge branch 'master' of https://repo.or.cz/MineClone/MineClone2 2018-05-25 13:47:29 +02:00
Wuzzy 48b7191af2 Regularily damage and delete entities in void 2018-05-25 13:45:41 +02:00
Wuzzy 12b0954523 Fix possible crash in mcl_mapgen_core 2018-05-20 15:25:57 +02:00
Wuzzy ab38d55646 Dispenser craft no longer needs bow to be intact 2018-05-20 03:02:31 +02:00
Wuzzy b852e56df3 Change clock texture usage and implement conversion 2018-05-20 01:50:53 +02:00
Wuzzy 4db935e91e Update falling nodes after being moved by piston 2018-05-19 02:30:23 +02:00
Wuzzy 4733355851 Texture converter: Convert banner overlays 2018-05-18 23:51:17 +02:00
Wuzzy c882f46eb6 Fix head node texture bugs 2018-05-18 22:13:56 +02:00
Wuzzy d59717b5d8 Convert large chest textures 2018-05-18 20:48:39 +02:00
Wuzzy b1122c5cda Fix bad side chest conversion 2018-05-18 19:51:37 +02:00
Wuzzy da39d76310 Implement conversion of single chests 2018-05-18 19:34:23 +02:00
Wuzzy 1082c995fe Rework end portal node
- Add 1/16 high collisionbox on bottom
- Make walkable
- Disable jump
2018-05-16 19:25:55 +02:00
Wuzzy fceee430b3 Remove minetest.inventorycube call from rs lamps 2018-05-16 18:27:19 +02:00
Wuzzy 7c434d85ed Also save cmd block on enter key 2018-05-16 18:16:17 +02:00
Wuzzy 689aa84c28 Make cmd block errors red 2018-05-16 18:02:37 +02:00
Wuzzy b1154be71b Command blocks now use 2-letter placeholders 2018-05-16 17:58:32 +02:00
Wuzzy dd380963ce Add “@@” placeholder to cmd blocks 2018-05-16 17:31:01 +02:00
Wuzzy a91e0cc537 Add @commander placeholder to command blocks 2018-05-16 17:07:11 +02:00
Wuzzy 51b6d07d0c Make cmd blocks execute cmds on behalf of placer 2018-05-16 16:55:52 +02:00
Wuzzy 88ca7c9a7e Red v6 sand must now be crafted with nether wart 2018-05-16 15:53:00 +02:00
Wuzzy ad69aa20ce Release 0.38.0 2018-05-15 02:05:00 +02:00
Wuzzy fcc53f4151 Remove inventory images of some internal nodes 2018-05-14 16:31:17 +02:00
Wuzzy 6894721e8d Fix trunk of balloon oak 1 not being force-placed 2018-05-13 18:53:42 +02:00
Wuzzy d5d65f4a84 Tweaking of the new tree schematics 2018-05-13 18:39:47 +02:00
Wuzzy b992100106 More variations of mega spruces and large oaks 2018-05-13 18:03:57 +02:00
Wuzzy f62f627443 Add end portal frame with eye into creative inv. 2018-05-13 05:23:38 +02:00
Wuzzy bf37c06de4 Add inner nodeboxes for banner nodes 2018-05-13 01:52:38 +02:00
Wuzzy 91fad8072d Register itemframe alias 2018-05-13 00:57:32 +02:00
Wuzzy a62b5de79e Cake+cauldron+endportalfr. put signal 4 comparator 2018-05-13 00:33:26 +02:00
Wuzzy acd58f6fe5 Fix jukeboxes destroying music disc metadata 2018-05-12 23:57:49 +02:00
Wuzzy 44dc8d10bb Comparators now detect itemframes as container 2018-05-12 23:50:17 +02:00
Wuzzy bae1fa072c Remove dead code 2018-05-12 22:53:21 +02:00
Wuzzy e38f19b5f3 Comparator now detects jukebox as container 2018-05-12 22:48:49 +02:00
Wuzzy 1ce9ab22bf Turn jukebox into a container (part 1) 2018-05-12 21:50:56 +02:00
Wuzzy a14ba4d9ff Change jukebox top texture 2018-05-12 21:04:29 +02:00
Wuzzy 7f24912a35 Increase arrow hit range from 2 to 3 2018-05-12 19:52:40 +02:00
Wuzzy 8fd2097526 Itemframes: Show item name as info text 2018-05-12 19:21:41 +02:00
Wuzzy 1a786bc64f Itemframes: Refactor entity 2018-05-12 19:13:15 +02:00
Wuzzy 35b1f72559 Add minimal itemframe LBM for compatability 2018-05-12 18:50:44 +02:00
Wuzzy d8ff91e089 Rename itemframes mod to mcl_itemframes 2018-05-12 18:18:17 +02:00
Wuzzy b0fa20df75 List incomplete items in README 2018-05-12 17:08:01 +02:00
Wuzzy 007b1c9b5d Version 0.37.0 2018-05-12 15:21:40 +02:00
Wuzzy 0ec411b868 Fix arrows getting stuck in impossible ways 2018-05-12 15:10:34 +02:00
Wuzzy c7949bf703 Arrows: Fix reverse flying arrows after long fly 2018-05-12 07:00:16 +02:00
Wuzzy fab5d17a5d Remove help button from furnace formspec 2018-05-09 19:58:22 +02:00
Wuzzy f0b732d7e0 Place boats in the placer direction 2018-05-09 18:43:07 +02:00
Wuzzy 294be0f302 Players must be closer to grab arrows 2018-05-09 18:19:42 +02:00
Wuzzy 7ca61b7185 Fix button pushed by arrows from wrong direction 2018-05-09 18:04:34 +02:00
Wuzzy 1823aba35a Merge branch 'stuck_arrow' 2018-05-09 17:39:22 +02:00
Wuzzy 1bef0775ce Implement stuck arrow timeout properly 2018-05-09 17:31:04 +02:00
Wuzzy f6c5117bf7 Update arrow help 2018-05-09 17:04:13 +02:00
Wuzzy e783ab17dc Force stuck arrows to be rechecked after punch 2018-05-09 16:49:37 +02:00
Wuzzy b61576e529 Tweak arrow collisionbox 2018-05-09 16:37:13 +02:00
Wuzzy 50eaaa15fa Rework arrow box appearance 2018-05-09 16:29:57 +02:00
Wuzzy 763d9458bf Fix arrows not getting stuck when flying up 2018-05-09 15:17:19 +02:00
Wuzzy af8515b6e4 Stuck arrows: Deflection, check stuck state, yaw 2018-05-09 15:10:56 +02:00
Wuzzy 0d60b5218a Destroy arrow if inside solid node 2018-05-09 02:00:34 +02:00
Wuzzy 76356ed1e5 Merge branch 'stuck_arrow' of http://repo.or.cz/MineClone/MineClone2 into stuck_arrow 2018-05-09 00:06:29 +02:00
Wuzzy 19dd11dfb8 Fix mesecons crash caused by arrow 2018-05-08 18:30:57 +02:00
Wuzzy c43b8baff4 Refactor arrow→button hit 2018-05-08 18:22:08 +02:00
Wuzzy f392e23719 Implement staticdata for arrow entities 2018-05-08 17:16:11 +02:00
Wuzzy fff3eb1ee7 Rename mcl_autogroup to _mcl_autogroup
This should fix some autogroup-related issues due to loading order.
2018-05-08 16:43:25 +02:00
Wuzzy 5ca5811bc8 Refactor how the misc creative category works 2018-05-08 15:58:26 +02:00
Wuzzy 4339c80fd8 Make arrows stick in solid nodes propery, trigger wooden buttons 2018-05-08 14:35:15 +02:00
Wuzzy af0025debc Wooden buttons stay pushed by arrow 2018-05-08 13:46:39 +02:00
Wuzzy 467018128a Merge branch 'master' into stuck_arrow 2018-05-08 13:08:04 +02:00
Wuzzy b95dbaf3d7 Add game description and screenshot 2018-05-08 03:56:45 +02:00
Wuzzy 83829ec358 Hide a couple of very incomplete items in Creative 2018-05-08 01:40:31 +02:00
Wuzzy 64f7e0a076 Fix active buttons staying on after restart 2018-05-08 00:48:07 +02:00
Wuzzy 47d067d9ec Make arrow stuck when they hit solid node (WIP) 2018-05-08 00:38:00 +02:00
Wuzzy fb8c5300cd Slow down arrows in liquids
This is a rought first implementation, very basic.
2018-05-08 00:10:20 +02:00
Wuzzy 32f612469f Re-colorize bow entity textures 2018-05-07 23:30:20 +02:00
Wuzzy 39e34b8f4e Fix charged bows being placable in itemframes 2018-05-07 23:22:54 +02:00
Wuzzy 62ed722088 Update bow texture paths in conversion table 2018-05-07 23:14:56 +02:00
Wuzzy 4be5f89829 Move bow/arrow logic into new mod mcl_bows 2018-05-07 23:10:49 +02:00
Wuzzy e55a1a6211 Play sound when hitting other player with arrow 2018-05-07 22:23:15 +02:00
Wuzzy 254a12b8af Use sneak speed when using bow 2018-05-07 20:37:45 +02:00
Wuzzy fc9b57950f Slow player down when using bow 2018-05-07 20:31:40 +02:00
Wuzzy 2c4eae353c Use mcl_playerphysics to handle player physics
This fixes some issues with speed overrides and gets rid of ugly workarounds.
2018-05-07 20:10:53 +02:00
Wuzzy da03b6af6a Add playerphysics framework 2018-05-07 19:56:48 +02:00
Wuzzy 7a208e3cd8 Drop charging bows as uncharged bow 2018-05-07 17:59:53 +02:00
Wuzzy adc86232ee Also reset charging bows after shoot 2018-05-07 17:46:52 +02:00
Wuzzy 9a5f4e41cb Bow: Fix broken bow charging when switching bows during charge 2018-05-07 17:43:39 +02:00
Wuzzy b19b1f5a2d Rewrite bow/arrow help texts 2018-05-07 17:06:00 +02:00
Wuzzy db755036c3 Just some sanity checks for bow charging 2018-05-07 16:45:12 +02:00
Wuzzy 88ef857fb4 Increase arrow damage smooth dmg/speed increase
Currently using linear increase.
2018-05-07 16:25:46 +02:00
Wuzzy 90363edd59 Charge bow faster and with higher time precision 2018-05-07 15:53:16 +02:00
Wuzzy 72d4940bf2 Remove unused code in mcl_throwing 2018-05-07 15:39:08 +02:00
Wuzzy 3f5079d2b9 Update mcl_throwing license 2018-05-07 15:34:16 +02:00
Wuzzy 33bdad095b Refactor bow code in mcl_throwing 2018-05-07 15:29:17 +02:00
Wuzzy b477d35cdc Implement smooth bow charging, based on [bows]
[bows] mod by Arcelmi:

https://github.com/Arcelmi/minetest-bows
2018-05-07 15:25:41 +02:00
Wuzzy 9b47ec2797 Add controls mod by arcelmi 2018-05-07 14:52:53 +02:00
Wuzzy 531e620c0f Version 0.36.3 2018-04-12 13:57:28 +02:00
Wuzzy 9376edeeda Re-add nametags which were removed accidentally 2018-03-31 21:58:52 +02:00
Wuzzy 11be72e635 Disable mob health display 2018-03-31 03:54:55 +02:00
Wuzzy 8060928237 Fix some creeper issues
- Fix fuse sound sometimes not playing
- Timer = 1.5s
- Distance behaviour like in MC
2018-03-31 03:53:11 +02:00
Wuzzy d6228145c6 Fix random mob teleportations once and for all! 2018-03-31 00:21:55 +02:00
Wuzzy 7be5914463 Update Mobs Redo 2018-03-31 00:18:40 +02:00
Wuzzy bcc87ded12 Version 0.36.2 2018-03-27 15:09:20 +02:00
Wuzzy 2606c264b9 Update doc modpack (1.2.2) 2018-03-27 15:08:31 +02:00
Wuzzy ed63c32f07 Rename “subgame” to “game” in mcl_doc_basics 2018-03-25 22:28:41 +02:00
Wuzzy 318415307c Update mobs_mc 2018-03-25 22:27:06 +02:00
Wuzzy bb6f2f7770 Rename “subgame” to “game” (partial fix) 2018-03-25 22:20:32 +02:00
Wuzzy 7821a69226 Make saplings break when pushed by piston 2018-03-13 02:47:54 +01:00
Bu-Gee d2f01c68f5 Pistons: When pushing a dropper node, dig it
Instead of calling handle_node_drops, etc.
2018-03-13 02:46:21 +01:00
Wuzzy e19271398d Make pumpkins and melons opaque again 2018-03-13 02:38:57 +01:00
Yukitty d73651424c Updated TNT fuse particles.
Fixed quirky integer math.random which was clearly intended to be floating point.
2018-03-12 00:05:43 +01:00
Wuzzy 33aa193289 Version 0.36.1 2018-03-05 14:36:35 +01:00
Wuzzy 1fa141d972 Custom node drops now ignore Creative Mode 2018-03-05 13:35:14 +01:00
Bu-Gee 3ae8119498 Fix crash when pushing pumpkin by piston 2018-03-05 12:53:16 +01:00
Wuzzy 34333c6b54 Add prismarine and prismarine brick stairs/slabs 2018-02-18 00:50:09 +01:00
Wuzzy 91cc3a2bd1 Version 0.36.0 2018-02-05 20:30:00 +01:00
Wuzzy 30be3e742f Damage anvil after falling 2018-02-05 19:58:31 +01:00
Wuzzy 32561ec658 Deal anvil falling damage more reliably 2018-02-05 19:20:14 +01:00
Wuzzy e4a1134d4f More anvil smashing fixes 2018-02-05 19:17:16 +01:00
Wuzzy c71bd9588d Generalize anvil damage 2018-02-05 19:03:56 +01:00
Wuzzy 584ef08266 Fix anvil repair sometimes destroying items 2018-02-05 18:35:12 +01:00
Wuzzy 0d4bb1a723 Falling nodes: Workaround for inv crash (MT#7020) 2018-02-05 17:26:36 +01:00
Wuzzy d713cd193c Move falling anvil handling to other mod 2018-02-05 17:18:28 +01:00
Wuzzy eef6c44e4a Anvils: Allow to use up to 4 materials at once 2018-02-05 16:09:29 +01:00
Wuzzy 42cf5b38d2 Remove player privilege 2018-02-05 03:02:25 +01:00
Wuzzy 2f88529d41 Don't allow anvil repair if already at max health 2018-02-04 07:36:47 +01:00
Wuzzy 146458112c Renamed spawn eggs spawn mob with name 2018-02-04 07:11:44 +01:00
Wuzzy 4608a2f98d Generalize some anvil attributes in help 2018-02-04 07:00:26 +01:00
Wuzzy 197afa664b Use color for named items 2018-02-04 06:39:10 +01:00
Wuzzy 8ff92fcb7f Fix anvil not updating after removing input slot 2018-02-04 06:13:12 +01:00
Wuzzy 9ca97d6f4a Fix naming of banner copies 2018-02-04 06:11:08 +01:00
Wuzzy 2c0eee27fc Fix restore of banner desc after anvil rename 2018-02-04 05:52:10 +01:00
Wuzzy a7f0d8c82c Fix wrong banner name when patterncrafting 2018-02-04 05:08:02 +01:00
Wuzzy d594b7b62f Fix anvil may destroy items when taking output 2018-02-03 05:50:59 +01:00
Wuzzy 256dd1e26a Fix some anvil renaming issues 2018-02-03 05:42:19 +01:00
Wuzzy fda5ed9e1c Allow to confirm anvil name with enter key 2018-02-03 05:34:20 +01:00
Wuzzy 64ddd07066 Increase effectiveness of tool+tool repair on anvil 2018-02-03 05:16:51 +01:00
Wuzzy dfb941cf90 Add anvil-related factoids 2018-02-03 04:40:31 +01:00
Wuzzy ef471a67fa Anvils: Don't allow rename if name is unchanged 2018-02-03 03:53:31 +01:00
Wuzzy 0b80b60cf1 Fix damaging anvil too aggressively 2018-02-03 03:43:28 +01:00
Wuzzy 9277bf4552 Remove duplicate code in mcl_anvil 2018-02-03 03:34:32 +01:00
Wuzzy ef7781e12e Add help for anvil 2018-02-03 03:33:48 +01:00
Wuzzy 8e0f8bbf43 Remove anvils from WIP 2018-02-03 02:51:12 +01:00
Wuzzy 41cebe13bf Chance to damage anvil with each step 2018-02-03 02:40:49 +01:00
Wuzzy 32ed701f0a Drop anvil item on dig 2018-02-03 01:43:07 +01:00
Wuzzy e42c5641b2 Anvils: Fix destruction of whole material stack 2018-02-03 01:03:36 +01:00
Wuzzy eb1711c2e7 Implement tool+material repair at anvil 2018-02-03 00:55:52 +01:00
Wuzzy dbd1fb46f9 Allow simple tool+tool repairs with anvil 2018-02-03 00:17:29 +01:00
Wuzzy 6c1a4ec911 Disable mob capture 2018-02-02 22:13:02 +01:00
Wuzzy 300b0545b4 Fix crash in w/ falling nodes 2018-02-02 22:12:45 +01:00
Wuzzy fff0e572aa Don't allow to use empty nametag 2018-02-02 17:35:36 +01:00
Wuzzy 15d7764c65 Require naming of name tag before it's usable 2018-02-02 17:33:52 +01:00
Wuzzy 449fc046dd Tweak anvil middle 2018-02-02 17:22:39 +01:00
Wuzzy f1057c0542 Enforce anvil name length more strictly 2018-02-02 05:42:35 +01:00
Wuzzy 7c1e625451 Allow to clear name with anvil 2018-02-02 05:40:22 +01:00
Wuzzy 86b7f537d5 Copying banners now clears name 2018-02-02 05:29:35 +01:00
Wuzzy 40163aed91 Forbid renaming of written books 2018-02-02 05:13:26 +01:00
Wuzzy 06c9b2c3f6 Handle item naming of banners 2018-02-02 05:07:58 +01:00
Wuzzy 87ef954409 Double save anvil-given name 2018-02-02 04:19:40 +01:00
Wuzzy a7190a3693 Implement renaming with anvils 2018-02-02 04:14:11 +01:00
Wuzzy e754eec3f7 Fix some global issues with rs repeater code 2018-02-02 03:46:27 +01:00
Wuzzy 043165ced2 Implement anvil inventory slot restrictions 2018-02-02 02:56:34 +01:00
Wuzzy e97fe05acc Specify the repair material of tools and armor 2018-02-02 02:33:10 +01:00
Wuzzy 40f468f18f Add non-functional anvil formspec 2018-02-02 02:07:09 +01:00
Wuzzy e649f37bc8 Add comment in minecart code 2018-02-02 01:21:19 +01:00
Wuzzy 4207f88266 Add dispenser API docs 2018-02-01 23:00:50 +01:00
Wuzzy fa10dc93ae Add _on_dispense callback for dispenser; refactor 2018-02-01 22:49:41 +01:00
Wuzzy 8774e7674d Add hoppers in README 2018-01-31 21:24:35 +01:00
Wuzzy 3e7ad08db0 Set is_ground_content=false for some nodes 2018-01-31 19:36:27 +01:00
Wuzzy a84a0a0db6 Change anvil nodebox 2018-01-31 19:23:37 +01:00
Wuzzy dfafa6c969 Fix rotation of falling anvils 2018-01-31 19:10:14 +01:00
Wuzzy b7b6f356fa Redstone: Add basic blastnode handling 2018-01-30 06:01:36 +01:00
Wuzzy d750e7f6d4 No longer hide observers 2018-01-30 05:56:30 +01:00
Wuzzy ca987e1255 Reorganize some commands 2018-01-30 03:33:30 +01:00
Wuzzy c22a5cba43 Fix falling nodes falling forever on walls 2018-01-29 03:18:02 +01:00
Wuzzy 7196485294 Remove sunlight propagation for various nodes 2018-01-28 20:21:02 +01:00
Wuzzy 31f545202a Declare chests to be transparent to sunlight 2018-01-28 19:30:52 +01:00
Wuzzy 093e9b0b08 Declare observers not opaque 2018-01-28 19:25:05 +01:00
Wuzzy 32f60c4fee Add README/credits for the lever mod 2018-01-27 19:48:44 +01:00
Wuzzy 50a1bb5ea5 Repeaters: Fix output if placed in lock + on state 2018-01-27 17:04:00 +01:00
Wuzzy 01bd264b2b Repeater: Fix sometimes bad lock on place 2018-01-27 16:44:30 +01:00
Wuzzy 2788cad59c Minor repeater refactor 2018-01-27 16:25:38 +01:00
Wuzzy 3229f2a902 Move the lock bar of repeaters 2018-01-27 16:22:59 +01:00
Wuzzy e1606eeb0c Repeaters: Use set_node instead of swap_node 2018-01-27 16:10:29 +01:00
Wuzzy a2ab52c705 Repeaters: Remember delay when locked 2018-01-27 16:07:59 +01:00
Wuzzy 28b24168e0 Rewrite redstone repeater help again 2018-01-27 15:41:51 +01:00
Wuzzy 42f5426fe9 Update repeater help (locking feature) 2018-01-27 15:41:01 +01:00
Wuzzy bca5a9f584 Update repeater help (locking feature) 2018-01-27 15:26:34 +01:00
Wuzzy 781caa1187 Repeaters: Do not unlock if locked from other side 2018-01-27 15:00:58 +01:00
Wuzzy 719e5193d8 Restrict is_powered call in mesecons_delayer 2018-01-27 14:34:50 +01:00
Wuzzy 878743cee5 Repeaters: Set correct lock state on placement 2018-01-27 14:32:21 +01:00
Wuzzy b3d069b53a Update repeater lock after dig 2018-01-27 06:01:49 +01:00
Wuzzy db94d1c601 Locked repeaters: Update receptor after unlock 2018-01-27 05:43:05 +01:00
Wuzzy a8c2b37175 Fix some bad repeater textures 2018-01-27 05:23:40 +01:00
Wuzzy 6b1354cd3b Lock and unlock repeaters (WIP) 2018-01-27 05:17:22 +01:00
Wuzzy bc1f3cd651 Add locked repeaters (nodes only) 2018-01-27 04:36:17 +01:00
Wuzzy 8950455026 Fix crash when dispensing spawn egg 2018-01-27 03:55:59 +01:00
Wuzzy c54019a8ab Change chorus-related recipes 2018-01-27 03:45:43 +01:00
Wuzzy d972fbfee8 Replace clear command with alias to clearinv 2018-01-27 03:19:59 +01:00
Wuzzy 91143ced4e Version 0.35.0 2018-01-27 02:35:45 +01:00
Wuzzy 1924940935 Update chest / trapped chest / ender chest help 2018-01-27 00:58:53 +01:00
Wuzzy 5e397d8611 Fix wrong redstone rules of trapped chest 2018-01-27 00:50:04 +01:00
Wuzzy 7953d8d1a6 Lift WIP status of trapped chests 2018-01-27 00:44:45 +01:00
Wuzzy a16746faf3 Simplify storage of players having an open chest 2018-01-27 00:44:07 +01:00
Wuzzy 2400ca5be0 Partially fix bad player counting of trapped chest 2018-01-26 23:44:03 +01:00
Wuzzy b1fcbbf68f New texture for trapped chest 2018-01-26 23:13:44 +01:00
Wuzzy 16bb9b8901 Localize various unneeded global variables 2018-01-26 22:37:42 +01:00
Wuzzy a40dec6da9 Add missing sounds for active repeater 2018-01-26 22:05:47 +01:00
Wuzzy dc13cf04dd Fix repeater stopping after rejoining world 2018-01-26 22:01:37 +01:00
Wuzzy 930ecf9be1 Fix rs not turnoff if rtorch is hor. behind opaque 2018-01-26 21:53:27 +01:00
Wuzzy e8ebc537f0 Fix door closing if dig opaque block next to it 2018-01-26 21:11:49 +01:00
Wuzzy 03b6c17f51 Fix door closing if only 1 segment loses power 2018-01-26 19:54:48 +01:00
Wuzzy c2d0414255 Fix crash when obj tele's Nether→Overworld @ rain 2018-01-26 19:37:00 +01:00
Wuzzy 58b9c3dbf5 Make creepers run away from cats/ocelots 2018-01-26 18:50:28 +01:00
Wuzzy fb1fb50bd3 Add new mob settings in settingtypes.txt 2018-01-26 18:31:19 +01:00
Wuzzy 0e88453a85 Update Mobs Redo, fix crash 2018-01-26 18:06:45 +01:00
Wuzzy dd4008ea73 Add totem of undying into combat category 2018-01-25 22:01:19 +01:00
Wuzzy 138005e40f /kill destroys totem of undying 2018-01-25 21:50:59 +01:00
Wuzzy 38478ee7e3 Fix broken kill command 2018-01-25 21:08:25 +01:00
Wuzzy e3cea04f12 Update mobs_mc, properly implement totem 2018-01-25 21:03:58 +01:00
Wuzzy ed5c2c2019 Tweak initial speed of TNT entitiy 2018-01-25 16:23:54 +01:00
Wuzzy 9a8e47bb02 Fix some bonus stairs being not properly diggable 2018-01-25 09:04:34 +01:00
Wuzzy cc32c54d87 Draw full set of activator rail textures 2018-01-25 05:18:35 +01:00
Wuzzy 70ea7d71ad Add setting to disable mob spawning 2018-01-25 04:57:31 +01:00
Wuzzy b9686c2d9f Allow to disable weather changes 2018-01-25 03:55:08 +01:00
Wuzzy a3388e5288 Add duration parameter to weather command 2018-01-24 06:50:28 +01:00
Wuzzy c6a56ed430 Simplify clear command 2018-01-23 23:48:26 +01:00
Wuzzy f7b0702457 Nerf zombie/husk/zvillager drops 2018-01-23 23:13:55 +01:00
Wuzzy c9812c5acf Minor vines help change 2018-01-23 06:42:46 +01:00
Wuzzy 647524f503 Rework the overly weird vine growth algorithm 2018-01-23 06:40:07 +01:00
Wuzzy 0405b2aa2c Fix some Lua warnings 2018-01-23 05:19:05 +01:00
Wuzzy f3a3681e7b Make chorus flower craftable 2018-01-23 04:30:59 +01:00
Wuzzy 101285d04d Fix chorus fruit not working with damage on 2018-01-23 04:24:05 +01:00
Wuzzy 232dbca783 Add sound for chorus fruit teleport 2018-01-23 04:18:19 +01:00
Wuzzy 064858ff59 “Still <Liquid>” → “<Liquid> Source” 2018-01-23 04:12:44 +01:00
Wuzzy d36ec8ee17 Update chorus fruit help 2018-01-23 04:01:59 +01:00
Wuzzy e3c207c312 Fix no placement sound of chorus flower 2018-01-23 02:56:46 +01:00
Wuzzy 92a595e9e7 Copy-editing of chorus plant help 2018-01-23 02:51:58 +01:00
Wuzzy 3399f3b0c2 Add chorus plant help 2018-01-23 02:44:05 +01:00
Wuzzy 88d1570f5b Drop TODO in chorus_plant.lua 2018-01-23 02:03:57 +01:00
Wuzzy 223729864f Remove chorus plant and flowers from WIP status 2018-01-23 02:00:51 +01:00
Wuzzy 3136c0f119 More mcl_end refactoring 2018-01-23 01:57:32 +01:00
Wuzzy af1465ab0c Tweak chorus flower aging 2018-01-23 01:54:59 +01:00
Wuzzy 5e47bce74e Refactor mcl_end 2018-01-23 01:53:43 +01:00
Wuzzy bdaaf912ab Implement basic chorus plant growth 2018-01-23 01:46:00 +01:00
Wuzzy fd4797c0e7 Add basic placement rules for chorus flower 2018-01-23 00:39:21 +01:00
Wuzzy 65c4d6af1a Fix chorus plant drops 2018-01-23 00:21:05 +01:00
Wuzzy fd3498aeec Merge branch 'master' of https://repo.or.cz/MineClone/MineClone2 2018-01-22 23:54:11 +01:00
Wuzzy da2fbed4c2 Burnout rs torch if it changes state too often 2018-01-22 23:52:04 +01:00
Wuzzy eacda330eb Remove mesecons/VERSION 2018-01-22 22:40:31 +01:00
Wuzzy a160d8411a Update redstone torch help 2018-01-22 22:40:16 +01:00
Wuzzy 31e8e7e374 Update redstone torch help 2018-01-22 22:19:45 +01:00
Wuzzy c9b731b8f9 Fix redstone torch state with block above 2018-01-22 21:49:20 +01:00
Wuzzy db4c860aa8 More work on redstone torch state 2018-01-22 21:32:07 +01:00
Wuzzy 8019cfd591 Faster updating of redstone torches 2018-01-22 21:11:10 +01:00
Wuzzy 94dfd63e14 Redstone torch: Use set_node instead of swap_node 2018-01-22 20:04:19 +01:00
Wuzzy 29d034ad09 Fix torches unplacable on disabled hoppers 2018-01-22 20:01:38 +01:00
Wuzzy d47af14d4d Implement basic redstone torch rules 2018-01-22 19:58:38 +01:00
Wuzzy 254a3093eb Fix inconsistent hopper texture 2018-01-22 18:06:12 +01:00
Wuzzy 53ca167eb1 Merge branch 'mesecons_updates' 2018-01-22 17:46:38 +01:00
Wuzzy b62075afcb Fix rail rules (kinda) 2018-01-22 17:33:06 +01:00
Wuzzy 01952b56fd Fix bad repeater updates when next to opaque block 2018-01-22 16:53:44 +01:00
Wuzzy a97f118805 Version 0.34.0 2018-01-21 06:42:12 +01:00
Wuzzy ca93a0e50f Remove experimental painting completely 2018-01-21 06:32:13 +01:00
Wuzzy e65d7c7ff4 Rename painting item 2018-01-21 06:29:43 +01:00
Wuzzy 8334b68111 Remove gemalde mod 2018-01-21 06:28:19 +01:00
Wuzzy f4657f79f5 Redstone: Propagate turnoff through opaque blocks 2018-01-20 20:42:53 +01:00
Wuzzy 33d978de06 Propagate redstone power through opaque blocks 2018-01-20 19:04:53 +01:00
Wuzzy aaf68793fe More redstone rule consistency 2018-01-19 03:34:30 +01:00
Wuzzy d5a72d240f Tweak redstone wire rules 2018-01-18 20:00:41 +01:00
Wuzzy aec2fb8309 Remove legacy mesecons code 2018-01-18 19:22:52 +01:00
Wuzzy 9d409927bc Make nether wart more common in v6 2018-01-17 22:56:20 +01:00
Wuzzy 92aa0114a2 Fix redstone having 2 help entries 2018-01-17 22:36:48 +01:00
Wuzzy b04e555635 Update help text of comparators 2018-01-17 22:30:27 +01:00
Wuzzy c9ef3f8536 Use default redstone rules for rails again 2018-01-17 21:01:26 +01:00
Wuzzy 5d913b6d29 Refactor some redstone internal code 2018-01-17 20:23:43 +01:00
Wuzzy e85a16f70a Redstone: Make is_powered respect spread 2018-01-17 20:20:08 +01:00
Wuzzy ec49459eb4 Update desert temple schematic 2018-01-17 19:53:20 +01:00
Wuzzy dba463ca6d Fix broken direct_source in mesecon.is_powered 2018-01-17 17:18:06 +01:00
Wuzzy f009e958f5 Redstone: Fix internal logic a bit 2018-01-17 05:49:11 +01:00
Wuzzy af3db1ae21 Fix opaque block placement propagate power too far 2018-01-17 03:54:51 +01:00
Wuzzy 2cf6332b57 Conductors no longer power themselves 2018-01-17 03:21:36 +01:00
Wuzzy 1522c875ae Code opaque block redstone power rule (part 1) 2018-01-17 02:44:00 +01:00
Wuzzy 2d5b519830 Fix weird fence mesecon behaviour 2018-01-17 01:45:12 +01:00
Wuzzy d61da938f4 Fix /seed giving wrong seed 2018-01-16 20:58:54 +01:00
Wuzzy 81d5d8b942 Update comparator help 2018-01-13 05:00:47 +01:00
Wuzzy 483d6d088c Make redstone wire transmit power vertically, too 2018-01-13 04:45:04 +01:00
Wuzzy 4f9be58871 Fix incorrect power transmission of buttons 2018-01-13 04:08:40 +01:00
Wuzzy f612d1b584 Rework core rules of most redstone components 2018-01-13 03:37:41 +01:00
Wuzzy 7626102bdb Fix dispenser inventory not getting set if up/down 2018-01-13 03:15:32 +01:00
Wuzzy f72717e8de Support powering of opaque blocks (WIP) 2018-01-13 02:20:07 +01:00
Wuzzy c4ec520986 Fix redstone torch rules 2018-01-13 02:19:52 +01:00
Wuzzy 1b5875582e Make redstone block an alldirs block 2018-01-13 01:49:28 +01:00
Wuzzy 3980beff1d Fix incorrect node drops of powered rails 2018-01-13 01:39:18 +01:00
Wuzzy 2f32c76013 Make v6 sapling treasures more common 2018-01-12 19:02:06 +01:00
Wuzzy 6f8b524d07 Update emerald help text 2018-01-12 17:56:02 +01:00
Wuzzy 30517ecb98 Add lava place sound 2018-01-12 02:26:12 +01:00
Wuzzy e4ab20509f Clean up the redstone rules 2018-01-12 01:37:32 +01:00
Wuzzy 54c0d1d750 Add banners to material_wood group 2018-01-11 02:42:43 +01:00
Wuzzy 24a523baa4 Easier orientation of dispenser/dropper placement 2018-01-11 01:28:36 +01:00
Wuzzy a2f1122405 Remove get_look_pitch in mesecons_pistons 2018-01-10 21:39:22 +01:00
Wuzzy a399bc4a80 Tweak piston footstep sound effects 2018-01-10 21:35:22 +01:00
Wuzzy 5eb805594e Add help text for observer 2018-01-10 21:26:39 +01:00
Wuzzy dfc721860e Add vertical observers (dummies, currently unused) 2018-01-10 21:11:27 +01:00
Wuzzy acb38db08d Reverse arrow direction of observer 2018-01-10 19:44:24 +01:00
Wuzzy d900279e1d Implement basic node scan of observers 2018-01-10 19:31:35 +01:00
Wuzzy 85c40daf8a Implement the redstone pulse of observers 2018-01-10 18:46:35 +01:00
Wuzzy 4bf7649027 Fix bad item name override in mcl_wip 2018-01-10 18:41:07 +01:00
Wuzzy 916627c6b6 Add on state for observers 2018-01-10 18:27:47 +01:00
Wuzzy 3627b03b2e Set rules for observer 2018-01-10 18:12:27 +01:00
Wuzzy b96974e253 Fix biome ores being generated in all biomes 2018-01-10 17:57:15 +01:00
Wuzzy 6e7e780af9 Fix ores spawning in non-existing biomes 2018-01-10 17:23:58 +01:00
Wuzzy 990a9a8b46 Update on_place callbacks when placing hopper 2018-01-10 16:57:57 +01:00
Wuzzy 8b15e41b12 Set hopper redstone rules 2018-01-10 16:35:26 +01:00
Wuzzy bf5e4f0788 Allow to disable hoppers with redstone power 2018-01-10 16:18:42 +01:00
Wuzzy 54bb6b707a Force-call on_place callbacks when placing door 2018-01-10 03:06:15 +01:00
Wuzzy 22fe1945ef Fix indentation in mcl_doors 2018-01-10 02:55:46 +01:00
Wuzzy aa99ea70ab More redstone/door tweaks 2018-01-10 02:49:29 +01:00
Wuzzy 3830e5d24c Change redstone open/close rules of doors etc. 2018-01-10 02:25:20 +01:00
Wuzzy 10c2097ac1 Prepare dummy code for unsticky nodes (glazed terracotta) 2018-01-10 01:33:56 +01:00
Wuzzy e3559e1de8 Increase hear distance of piston push sound 2018-01-09 20:39:00 +01:00
Wuzzy 9bf25214be Doors register redstone signal on top part, too 2018-01-09 17:44:54 +01:00
Wuzzy bb31415670 Remove facedir, add sounds to redstone wires 2018-01-09 17:31:23 +01:00
Wuzzy 3e3b447132 Add opaque group to lit redstone lamp 2018-01-09 15:19:10 +01:00
Wuzzy 31cd23291a Make carpets non-walkable 2018-01-09 15:05:15 +01:00
Wuzzy b852eb9d87 Mark several mobs as WIP 2018-01-09 14:32:58 +01:00
Wuzzy b959baa9d6 Update lever help 2018-01-08 21:20:53 +01:00
Wuzzy 71e663efe6 Merge branch 'lever' 2018-01-08 21:00:36 +01:00
Wuzzy 68a9a9bc40 Fix normals of wall levers and remove unused face 2018-01-08 20:46:44 +01:00
Wuzzy d4d03526db Cocoas now use attached_node_facedir
This fixes some annoying bugs when removing jungle trees nearby
2018-01-08 20:19:33 +01:00
Wuzzy 33386b19ca Drop lever when attached node is destroyed 2018-01-08 20:11:33 +01:00
Wuzzy 1505290e24 New way to attach node: attached_node_facedir 2018-01-08 20:10:44 +01:00
Wuzzy dfc0d52372 Implement correct lever orientations 2018-01-08 17:45:30 +01:00
Wuzzy b133dd6d5b Mob spawner: Fix mob sometimes not set correctly 2018-01-08 16:10:42 +01:00
Wuzzy f71cff0468 Can't sprint and sneak at the same time 2018-01-08 04:03:28 +01:00
Wuzzy afc55f8139 Remove unused "Force night skip" button in beds 2018-01-08 03:53:15 +01:00
Wuzzy f5010ec32a Sleep takes 5 seconds instead of 2 2018-01-08 03:49:34 +01:00
Wuzzy a46064bd92 Always clear weather after sleep 2018-01-08 03:42:51 +01:00
Wuzzy c9dc405531 Beds: First check distance 2018-01-08 03:19:19 +01:00
Wuzzy 84c099b234 Refine monster sleep prevention exceptions 2018-01-08 03:16:27 +01:00
Wuzzy 299bb332dc Prevent player from sleeping if monsters or too far from bed 2018-01-08 02:49:41 +01:00
Wuzzy 2b3a2e67b5 Remove escape pearls from mcl_wip 2018-01-08 02:29:14 +01:00
Wuzzy a7425b37b5 Extend mobspawner help 2018-01-08 02:19:00 +01:00
Wuzzy 20457fa2bd Remove end escape pearl 2018-01-08 02:12:15 +01:00
Wuzzy a89b9e9c45 Update Mobs Redo 2018-01-08 02:03:31 +01:00
Wuzzy a818995d2a Generated mob spawners generate mobs in darkness (except silverfish) 2018-01-08 00:41:57 +01:00
Wuzzy fa51fdbdb5 Freeze water in snowtop biome 2018-01-08 00:19:53 +01:00
Wuzzy dff88c70b3 Optimize top snow level 8 rendering 2018-01-07 23:43:23 +01:00
Wuzzy c26c6e012b Update top snow and ice help 2018-01-07 23:37:02 +01:00
Wuzzy 86c24532f9 Implement 8 top snow layers 2018-01-07 23:21:47 +01:00
Wuzzy 20baacb1fe Fix typo in GROUPS.md 2018-01-07 21:53:46 +01:00
Wuzzy d19bfb3406 Implement snow placement restriction 2018-01-07 21:34:42 +01:00
Wuzzy fc0516cb71 Melt ice and top snow @ light >= 12 2018-01-07 21:01:34 +01:00
Wuzzy ba0bc7a47d Squids and guardians no longer get stranded all the time 2018-01-07 18:03:03 +01:00
Wuzzy c2161b59f4 Fix witch doll size in mob spawner 2018-01-07 17:54:40 +01:00
Wuzzy ac8d284fab Fix broken mobspawner doll textures for 4 mobs 2018-01-07 17:50:50 +01:00
Wuzzy 777d8403e8 Mobspawner: Fix overlarge dolls for large mobs 2018-01-07 17:29:56 +01:00
Wuzzy 3cf6656df2 Rename "Monster Spawner" to "Mob Spawner" 2018-01-07 16:58:44 +01:00
Wuzzy cc411efe4c Move mob spawner change code to mobs mod 2018-01-07 16:53:25 +01:00
Wuzzy 1a96ef137a Allow to change monster spawner mob with spawn egg 2018-01-07 16:37:41 +01:00
Wuzzy 479ed1c12a Fix generated vines sometimes horizontal in air 2018-01-07 16:00:21 +01:00
Wuzzy 8322869e0f Update the saddle help 2018-01-02 15:18:56 +01:00
Wuzzy 8c9c51a4c2 Version 0.33.1 2018-01-02 14:59:44 +01:00
Wuzzy 74a7770a7c Tweak command block formspec 2018-01-02 14:32:40 +01:00
Wuzzy cd86148c70 Improve command block help 2018-01-02 14:25:31 +01:00
Wuzzy b2fecffb43 Fix piston not activate when powered from +X 2017-12-29 02:28:18 +01:00
Wuzzy 6bece82970 Fix spruce doors being mirrored wrong 2017-12-23 03:15:52 +01:00
Wuzzy 9e44f96793 Version 0.33.0 2017-12-19 15:20:57 +01:00
Wuzzy 0c9b28c92e Fix missing decorations in v6 2017-12-13 21:01:04 +01:00
Wuzzy 0e53c6e4c1 Can't add commands into command blocks if you have not the privs 2017-12-13 20:16:32 +01:00
Wuzzy b0c8c64bbe Add proper error msg when using kill w/o dmg 2017-12-13 19:42:30 +01:00
Wuzzy 55c714ec48 Warn player about the incomplete End dimension 2017-12-13 02:55:23 +01:00
Wuzzy 89ef81b4c5 Remove buggy chests and furnaces from villages 2017-12-13 00:50:13 +01:00
Wuzzy 3b9b34a0de Add warning when building a village 2017-12-13 00:50:03 +01:00
Wuzzy 3f0bfa0aa8 Add maphack privilege for advanced blocks like command blocks 2017-12-13 00:30:23 +01:00
Wuzzy 5d2df6db4c Fix broken huge mushroom caps generating 2017-12-12 23:59:35 +01:00
Wuzzy 6a9a00b387 Add death message if player killed by lightning 2017-12-12 23:53:54 +01:00
Wuzzy 40d22d2173 Fix crash when using eye of ender in singlenode 2017-12-11 19:33:58 +01:00
Wuzzy 96c7df9b45 Add basic help for huge mushroom stems 2017-12-11 18:15:40 +01:00
Wuzzy 666d56e11c Update mushroom README files 2017-12-11 18:04:54 +01:00
Wuzzy cd20cbbb92 Update huge mushroom schematics 2017-12-11 18:02:42 +01:00
Wuzzy 260e15aca7 Experimental legacy support for old mushroom block 2017-12-11 17:12:12 +01:00
Wuzzy a82610fef1 Allow pores on each side of huge mushroom caps
Also automatically create porse when placing cap blocks next to each other.
Node names are changed.
2017-12-11 16:28:28 +01:00
Wuzzy 759a9524fc Add bark stairs and slabs 2017-12-11 06:53:00 +01:00
Wuzzy f38f1ec061 Rewrite help of riverwaterlogged sponge 2017-12-11 04:57:40 +01:00
Wuzzy b433bb2f4b Add fence sound licensing 2017-12-11 04:14:38 +01:00
Wuzzy 05c324748f Slightly shift search field in Creative inventory 2017-12-11 04:04:32 +01:00
Wuzzy 972c00e944 Version 0.32.0 2017-12-11 01:57:15 +01:00
Wuzzy 7d00c008d0 Fixed height of end portal shrines in flat worlds 2017-12-11 01:56:50 +01:00
Wuzzy 0290511578 Infested blocks now break instantly 2017-12-11 01:43:01 +01:00
Wuzzy 2c9b686885 Rename monster egg to “infested” blocks 2017-12-11 01:28:53 +01:00
Wuzzy ea649b7e71 Update Conversion Table WRT river water 2017-12-11 01:05:18 +01:00
Wuzzy c4dbbc9147 Item frames no longer have an owner 2017-12-10 23:06:03 +01:00
Wuzzy a79c2ade05 Fix dependency mess of mcl_structures 2017-12-10 22:49:49 +01:00
Wuzzy a50f714400 Tweak eye of ender behaviour 2017-12-10 22:40:45 +01:00
Wuzzy 810357f81a Rename end portal room to end portal shrine 2017-12-10 22:22:37 +01:00
Wuzzy 664c24ce7d Eyes of ender now fly to End portal shrines! 2017-12-10 22:20:48 +01:00
Wuzzy 55778ab375 Add function to query stronghold positions 2017-12-10 18:48:34 +01:00
Wuzzy 2d8ad7ebf0 Generate end portal rooms in the world 2017-12-10 18:39:02 +01:00
Wuzzy aff2020731 Remove redundant code in mcl_core 2017-12-10 18:38:37 +01:00
Wuzzy fdae9711f8 Randomize stonebrick stairs in end portal room 2017-12-09 16:50:32 +01:00
Wuzzy eae8b782a8 64 nodes above the Nether are non-deadly void 2017-12-09 15:39:27 +01:00
Wuzzy 53511b69fd Teleport player to spawn if in deep void w/o dmg 2017-12-09 15:25:57 +01:00
Wuzzy d2a7bd1a53 Disallow screwdriver rotation of end portal frame 2017-12-09 15:01:41 +01:00
Wuzzy 5f4d73143e Destroy end portal if end portal frame with eye is removed 2017-12-09 14:58:06 +01:00
Wuzzy 206bd3d29f Fix hole in end portal room schematic 2017-12-09 14:16:53 +01:00
Wuzzy 1537ae276e Tweak stone brick chances of end portal rooms 2017-12-09 14:08:36 +01:00
Wuzzy c4dbbda9fd Add end portal room structure 2017-12-09 02:05:41 +01:00
Wuzzy 957f19a427 Fix missing sounds of new stairs and slabs 2017-12-08 19:03:20 +01:00
Wuzzy 282b7e0025 Fix double slab not working if no craft for slab 2017-12-08 18:41:59 +01:00
Wuzzy f32eeed2cf Fix invalid screwdriver rotation of ender chest 2017-12-08 17:33:45 +01:00
Wuzzy 8d70823331 Add double slab descriptions for mclx_stairs 2017-12-08 17:21:07 +01:00
Wuzzy b7518bcbcc Fix some mcl_weather crashes 2017-12-08 17:16:49 +01:00
Wuzzy 4ad7147123 Restore weather state when restarting server 2017-12-08 16:54:49 +01:00
Wuzzy 3443e68b76 Railcorridors: Use dark oak wood in terracotta 2017-12-08 16:13:02 +01:00
Wuzzy da8729a7a1 Increase pointing range in Creative Mode 2017-12-08 14:00:44 +01:00
Wuzzy 85442e7ce5 Draw proper trapdoor side textures 2017-12-08 13:38:38 +01:00
Wuzzy 681c2950fd Fix mirrored trapdoor top/bottom texture when open 2017-12-08 13:07:24 +01:00
Wuzzy faafaadc54 Fix memory leak in mcl_craftguide 2017-12-08 11:29:25 +01:00
Wuzzy d9a8403e11 Use red sand as river bed in Mesa and MesaPlateauF 2017-12-07 14:35:12 +01:00
Wuzzy 5851bf5a0e Increase in-water opacity 2017-12-06 01:01:58 +01:00
Wuzzy 5f4f22bddd Update conversion table 2017-12-06 00:26:54 +01:00
Wuzzy ff1996c708 Merge branch 'river_water' 2017-12-05 23:01:05 +01:00
Wuzzy 51e9d7cd93 Add mcl_supplemental fence aliases 2017-12-05 17:35:10 +01:00
Wuzzy 931da727bc Add new slab side textures for mclx slabs 2017-12-05 17:22:35 +01:00
Wuzzy 5f1c4f77bb Add a ton of non-MC slabs and stairs 2017-12-05 16:21:49 +01:00
Wuzzy c96d97671a Add nether brick fence gate + red nb fence (+gate)
This is the first commit in master which officially breaks the block strictness.
2017-12-05 15:52:35 +01:00
Wuzzy 83f7655f31 Don't rotate ladder and vine 2017-12-05 14:17:07 +01:00
Wuzzy 320567e1f2 Add basic screwdriver support 2017-12-05 14:09:39 +01:00
Wuzzy 2b9f37b3e8 Add death messages for kill from baby mobs 2017-12-03 11:23:37 +01:00
Wuzzy e227470474 Fix falling node falling forever on fences (hacky) 2017-12-01 22:22:00 +01:00
Wuzzy 312652552e Delete un-initialized item entities on first step
Due to data corruption, item entities in a world may be loaded with
empty staticdata. These items are now deleted on their first on_step.
This commit also should fix all dropped hand bugs.
2017-12-01 18:50:15 +01:00
Wuzzy a5b213968c Fix failure to clear snow weather correctly 2017-12-01 16:02:29 +01:00
Wuzzy 785b4a2ef7 Dispensers dispense water buckets into cauldrons 2017-11-30 21:08:28 +01:00
Wuzzy 74d5da78a1 Simplify water mixing rules in cauldron 2017-11-30 20:35:21 +01:00
Wuzzy e2a441fed1 Fix banner washing off on river water cauldron 2017-11-30 19:59:50 +01:00
Wuzzy 2a78471ef1 Fix cauldrons and rain 2017-11-30 19:57:06 +01:00
Wuzzy c12e07d8c7 Remove brewing references from help 2017-11-30 19:41:30 +01:00
Wuzzy 142317c65a Add river water support for bottles and cauldrons 2017-11-30 19:27:57 +01:00
Wuzzy 99af7618ee Fix mcl_sponges dependencies 2017-11-30 17:46:47 +01:00
Wuzzy 443fb284cb Add riverwaterlogged sponge, rename wet sponge 2017-11-30 17:36:08 +01:00
Wuzzy 2093a6b5c2 Water mobs now swim in river water 2017-11-30 15:39:19 +01:00
Wuzzy 135a214213 Make river water non-renewable 2017-11-30 15:01:33 +01:00
Wuzzy c47a762766 Fix river water bucket wieldview transform 2017-11-30 14:59:13 +01:00
Wuzzy be51523459 Add water_bucket group 2017-11-30 14:57:40 +01:00
Wuzzy 438039f3fb Add river water bucket 2017-11-30 14:50:37 +01:00
Wuzzy b4bb986d61 Add river water 2017-11-30 14:19:00 +01:00
Wuzzy 9c80f8d970 Remove mcl_dungeons unused code 2017-11-30 10:21:54 +01:00
Wuzzy 5fb9b8bad7 Version 0.31.0 2017-11-29 02:12:17 +01:00
Wuzzy 26c5e048d0 Write help entry for hunger 2017-11-28 16:48:01 +01:00
Wuzzy 479a811c86 Add basic mob and animal help entries 2017-11-28 15:20:55 +01:00
Wuzzy 5ccb5ee71e Help: Add Creative Mode 2017-11-28 13:47:34 +01:00
Wuzzy abfe009246 Change emerald-related crafts 2017-11-28 12:54:30 +01:00
Wuzzy 6d6999bcea Creepers drop all music discs now; remove crafts 2017-11-28 12:45:39 +01:00
Wuzzy 83a3cce932 Fix pumpkin pie crafting 2017-11-28 08:31:22 +01:00
Wuzzy 72684f36ff Remove faceless pumpkins from survival again
The top face rotates when you use shears on the pumpkin.
2017-11-27 12:40:07 +01:00
Wuzzy 060a853840 Add end escape pearl 2017-11-27 12:17:26 +01:00
Wuzzy 6b10633332 Insta-harden concrete powder if placed in water 2017-11-27 11:38:30 +01:00
Wuzzy f9a2607200 Make falling anvils crush some nodes 2017-11-27 07:57:02 +01:00
Wuzzy c6016c2053 Add MC-like falling nodes 2017-11-26 15:05:45 +01:00
Wuzzy f0b5f10c90 Update mcl_spawn 2017-11-26 15:04:31 +01:00
Wuzzy 6eab8e213c Add 5 wood trapdoors, change oak trapdoor texture 2017-11-24 12:07:16 +01:00
Wuzzy de04fbc062 Fix respawn bugs 2017-11-24 07:24:13 +01:00
Wuzzy 9faef59f53 Reduce player liquid sinking speed 2017-11-24 07:07:21 +01:00
Wuzzy 351f1834a3 Add Spawn API 2017-11-24 07:04:03 +01:00
Wuzzy 124e1aac94 Update API.md 2017-11-24 06:47:19 +01:00
Wuzzy a5107bc38e Add temporary recipes for the new smooth blocks 2017-11-24 05:06:32 +01:00
Wuzzy b221ca379c Make bark craftable 2017-11-24 04:55:02 +01:00
Wuzzy f8d5c23291 Fix another rain sound update bug 2017-11-24 04:21:10 +01:00
Wuzzy 2858fbb54a Update rain particles faster when teleporting 2017-11-24 04:05:12 +01:00
Wuzzy 6d609be8c7 Instant rain sound updates when changing dimension 2017-11-24 04:00:30 +01:00
Wuzzy b1d15fb667 Update sky instant if teleport between dimensions 2017-11-24 03:48:32 +01:00
Wuzzy b0c87f74fe Move world-related functions to mcl_worlds 2017-11-24 03:10:02 +01:00
Wuzzy 06ef86ddd3 Move entire sky color code into mcl_weather 2017-11-24 01:39:52 +01:00
Wuzzy d55928fe95 Fix lightnings in the End 2017-11-23 22:31:39 +01:00
Wuzzy 2e6aa37ca4 Remove piston base when piston head got destroyed 2017-11-23 21:15:42 +01:00
Wuzzy 5c98a01fb1 Generalize piston arm destruction 2017-11-23 20:52:33 +01:00
Wuzzy 390bbf628f Fix broken MVPS stoppers 2017-11-23 20:49:05 +01:00
Wuzzy f55025be17 Add end portal frames as portal stoppers 2017-11-23 20:11:03 +01:00
Wuzzy 219e6ff146 Fix incomplete door destruction code
This fixes doors being destroyed by activating an End portal
2017-11-23 19:36:55 +01:00
Wuzzy 62364a65ca Add smooth quartz 2017-11-23 03:24:39 +01:00
Wuzzy 35407a8b31 Fix pumpkin face group 2017-11-23 01:24:47 +01:00
Wuzzy ab0de78151 More accurate hopper selection box 2017-11-23 00:41:26 +01:00
Wuzzy f5de6db4aa Add grass path and farmland to creative inventory 2017-11-23 00:32:51 +01:00
Wuzzy 8826cafa7c Allow to carve pumpkins 2017-11-23 00:20:49 +01:00
Wuzzy ce544cce6e Add faceless pumpkin 2017-11-23 00:05:31 +01:00
Wuzzy a66df6bc9a Add polished stone and smoother sandstone 2017-11-22 23:42:39 +01:00
Wuzzy 7cc6b9eada Add 6 bark blocks 2017-11-22 22:58:45 +01:00
Wuzzy bc3190d5a9 Change pressure_plate group 2017-11-22 22:42:00 +01:00
Wuzzy 7fab1ada00 Add buttons for all woods 2017-11-22 22:41:43 +01:00
Wuzzy a2fefb264b Refactor button registration 2017-11-22 22:24:05 +01:00
Wuzzy 6efddc833c Add pressure plates for each wood type 2017-11-22 22:08:09 +01:00
Wuzzy aa8507f94a Fix End portal platform sometimes not spawning 2017-11-22 06:18:08 +01:00
Wuzzy 768c97205a Reduce fire extinguish sound 2017-11-22 03:10:01 +01:00
Wuzzy 6d727137c2 Rain puts out fire faster 2017-11-22 03:04:20 +01:00
Wuzzy 91c06fd77a Tweak snow sky 2017-11-22 02:59:09 +01:00
Wuzzy 1332ae683f Lightnings light up the surroundings as well 2017-11-22 02:19:04 +01:00
Wuzzy 89ab761fa5 Fix day/night ratio override in dimensions 2017-11-22 02:08:39 +01:00
Wuzzy bbb6900d4a Fix rain sound failure when moving very fast 2017-11-22 02:01:40 +01:00
Wuzzy 3df64d9426 Tweak day/night ratio issues 2017-11-22 01:56:41 +01:00
Wuzzy dd17e5ca9d Tweak rain sky color 2017-11-22 01:45:59 +01:00
Wuzzy bccc7fa957 Merge branch 'master' into day_night_ratio 2017-11-22 01:41:23 +01:00
Wuzzy c434a41dec Refactor and tweak sky light overwrite 2017-11-22 01:09:41 +01:00
Wuzzy ae8b7550ac Play damage sound when player dies 2017-11-21 23:38:20 +01:00
Wuzzy eed223b3fe Tweak tab positions in Creative 2017-11-21 23:23:56 +01:00
Wuzzy 7a8dad991b Refactor mcl_portals 2017-11-21 22:58:11 +01:00
Wuzzy 7920707ca4 Don't allow to use bed while sleeping 2017-11-21 20:23:34 +01:00
Wuzzy a575124924 Don't suffocate in ignore 2017-11-21 20:20:17 +01:00
Wuzzy f1ac073cb1 Implement end portal frame 2017-11-21 09:54:45 +01:00
Wuzzy cb898ddbfa Update End portal help 2017-11-21 07:39:56 +01:00
Wuzzy 8982dd82ca Tweak end portal compat code 2017-11-21 07:26:45 +01:00
Wuzzy fc17303b1e Generate end exit portal near the spawn in the End 2017-11-21 07:24:56 +01:00
Wuzzy 71be25f44a Only play tele sound for players 2017-11-21 06:03:07 +01:00
Wuzzy 3abf2355e6 Fix exit portal teleporting back in flat mapgen 2017-11-21 05:57:08 +01:00
Wuzzy 7c15d5f9ac More MC-like end portal block (WIP) 2017-11-21 05:39:27 +01:00
Wuzzy 526217a21b Disable Nether portals in the End 2017-11-21 02:05:52 +01:00
Wuzzy 69ade14509 Rename weather_pack mod to mcl_weather 2017-11-21 01:35:31 +01:00
Wuzzy 37668eb1f9 Remove dependency on Pillow library 2017-11-20 20:51:58 +01:00
Wuzzy 06edeba5d0 Version 0.30.0 2017-11-20 19:24:06 +01:00
Wuzzy 07219b96b1 Fix shears not wear off if dig tallgrass etc. 2017-11-20 09:35:08 +01:00
Wuzzy 45c385628a Fix crash when piston got pushed next to redstone 2017-11-20 08:04:09 +01:00
Wuzzy 899acaab0e Hide WIP items from craft guide, more cleanup
- Make fishing rod uncraftable (too overpowered)
- Lift WIP status from golden apple
- Lift Experimental status from lookup tool
2017-11-20 07:52:24 +01:00
Wuzzy a1e53fa129 Use dry grass blocks in the Nether 2017-11-20 05:37:04 +01:00
Wuzzy f3919cace9 Beds now allow to skip thunderstorms 2017-11-20 05:06:58 +01:00
Wuzzy 547eb893af Refactor weather change code 2017-11-20 04:26:43 +01:00
Wuzzy fd32ee0318 Fix placing stairs = crash 2017-11-20 03:26:34 +01:00
Wuzzy cbc122836d Rotate spawned record of juke boxes 2017-11-18 22:12:36 +01:00
Wuzzy d549dc0752 Add missing nil check for minetest.get_node_light 2017-11-18 21:39:00 +01:00
Wuzzy 79ca0b2ab9 Workaround for crash if place stair/slab/trapdoor inside a buildable_to node 2017-11-18 20:57:41 +01:00
Wuzzy 34d4c19855 Update texture converter comments 2017-11-18 20:31:56 +01:00
Wuzzy 6a8cf24100 Converter: Add mcl_supplemental support 2017-11-18 20:30:21 +01:00
Wuzzy 14578baec1 Fix button inv. image breaking if use texture pack 2017-11-18 20:00:36 +01:00
Wuzzy 6a9d3fe55e Converter: Generate crossings and junctions 2017-11-18 19:38:59 +01:00
Wuzzy 620d8a7804 Fix previous creative inventory button not working after death 2017-11-18 09:03:49 +01:00
Wuzzy 28fe2ae184 Update texture conversions 2017-11-18 07:57:51 +01:00
Wuzzy ca833e0d5e Refactor texture converter 2017-11-18 07:39:02 +01:00
Wuzzy cc0e3452df Converter: Tweak foliage color 2017-11-18 07:16:06 +01:00
Wuzzy 2cf712a0be Fix broken alpha in texture converter 2017-11-18 06:13:08 +01:00
Wuzzy 1319271fd4 Texture converter: refactor convert_alphatex 2017-11-18 05:52:40 +01:00
Wuzzy e2daac4c33 Fix fern being gray in flower pot 2017-11-18 04:47:16 +01:00
Wuzzy 5519f6b7a3 Remove annoying nodes.lua in flowerpots mod 2017-11-18 04:44:23 +01:00
Wuzzy c9c5c43010 Converter: Blacklist a couple of textures 2017-11-18 04:42:42 +01:00
Wuzzy 608571cfa7 Clean up Texture Converter stuff 2017-11-18 03:42:44 +01:00
Wuzzy a7507482a6 Fix some texture conversions, add -p to Texture Converter 2017-11-18 03:40:29 +01:00
Wuzzy a19549d77e Add options to the texture converter 2017-11-18 02:33:43 +01:00
Wuzzy 7913a93969 Relicence texture converter under MIT 2017-11-18 01:25:55 +01:00
Wuzzy c8e1379196 More orange in orange glazed terracotta texture 2017-11-17 23:52:06 +01:00
Wuzzy cbd3061d1b Change allium texture 2017-11-17 23:51:50 +01:00
Wuzzy e79384f906 Retexturize door sides 2017-11-17 22:46:42 +01:00
Wuzzy cf1b999ab6 Generalize grass color check 2017-11-16 07:48:55 +01:00
Wuzzy a9d95dea23 Use hardware coloring for tallgrass and friends 2017-11-16 03:13:19 +01:00
Wuzzy 8db574d30e Clean up grass block group stuff 2017-11-15 20:27:29 +01:00
Wuzzy 54ae1190d6 Allow spruces at Y=1 2017-11-15 06:23:46 +01:00
Wuzzy 06d109e86b Fix can place flower podzol and coarse dirt
Also fix help entries
2017-11-15 05:02:37 +01:00
Wuzzy 192a440745 Tweak selection boxes of plantlike nodes 2017-11-15 04:40:29 +01:00
Wuzzy 9507aa6a90 Make grass block dry when placed next to dry grass 2017-11-15 03:47:08 +01:00
Wuzzy 74e1a7d326 Take grass block when enderman took dry grass b. 2017-11-15 03:12:31 +01:00
Wuzzy f53cf859c2 Fix mob spawning in savannas 2017-11-15 02:36:56 +01:00
Wuzzy c79b1062cc Add small beach to plains biomes 2017-11-15 02:30:30 +01:00
Wuzzy 6b2c06934a Autom. make grass/fern dry if placed on dry grass 2017-11-15 01:29:17 +01:00
Wuzzy 4083432770 Bone meal spawns less floer species on dry grass 2017-11-14 23:52:03 +01:00
Wuzzy 72f5591400 Add dry-colored grass/fern variants 2017-11-14 23:44:53 +01:00
Wuzzy 3bc9918370 Update texture conversion table 2017-11-14 18:30:25 +01:00
Wuzzy c698714d95 Convert jukebox tracks to mono 2017-11-13 01:30:47 +01:00
Wuzzy aaef558909 Convert all sounds (except music) to mono 2017-11-13 01:24:24 +01:00
Wuzzy 1c085b5467 Mobs_mc: Convert mob sounds to mono 2017-11-13 00:46:52 +01:00
Wuzzy f0e0e754b0 Implement more logical weather transitions 2017-11-12 06:57:11 +01:00
Wuzzy 15b96ff7cf Fix very loud snow footstep sound 2017-11-12 06:08:09 +01:00
Wuzzy e1d362d215 Increase weather duration 2017-11-12 05:27:18 +01:00
Wuzzy b220a07877 Fix more weather length issues 2017-11-12 05:14:25 +01:00
Wuzzy de6096f47a Fix pig→zombiepig lightning transform 2017-11-12 05:11:21 +01:00
Wuzzy f052f147b5 Tweak weather durations to be more MC-like 2017-11-12 05:03:26 +01:00
Wuzzy b7880529a8 Make everything dark for player when in weather (WIP) 2017-11-12 04:36:26 +01:00
Wuzzy 562bd6cd5a Reduce raindrop count in thunderstorms 2017-11-12 03:28:53 +01:00
Wuzzy 4f639b024d Lightnings cause damage, change pigs and villagers 2017-11-12 03:24:46 +01:00
Wuzzy c09ca3363d Rarely spawn skeletons (+s. horse) on lightning 2017-11-12 02:48:18 +01:00
Wuzzy b3ad5c7927 Generate more raindrops in thunderstorms 2017-11-12 02:10:22 +01:00
Wuzzy de45af5e79 Tweak sky color on rain and thunderstorm 2017-11-12 01:36:37 +01:00
Wuzzy 10a0819790 Fix hearable rain in Nether and End dimensions 2017-11-11 21:14:03 +01:00
Wuzzy b4f1d2c521 Move eternal fire ignition code to the actual node 2017-11-11 19:52:11 +01:00
Wuzzy c6a471e5a7 Weather_pack: os.time → minetest.get_gametime 2017-11-11 17:18:53 +01:00
Wuzzy 53f231a576 Fix biomemap being screwed up in mcl_mapgen_core 2017-11-07 20:16:25 +01:00
Wuzzy d4708c804a Don't generate bedrock and lava in singlenode 2017-11-07 05:29:39 +01:00
Wuzzy 44e756cc8d Change glazed terracotta textures to 16×16
Thanks, MysticTempest!
2017-11-06 15:24:32 +01:00
Wuzzy e157db0c49 Version 0.29.2 2017-11-05 05:10:23 +01:00
Wuzzy 6ff1be07cb Fix crash on join w/ compass + static_spawnpoint set in bracket format 2017-11-05 02:50:31 +01:00
Wuzzy 5403a97a56 Fix ocelots being aggressive to players 2017-11-04 00:37:02 +01:00
Wuzzy c2684d0eac Update Mobs Redo to version 1.40 2017-11-04 00:22:43 +01:00
Wuzzy 088bb40908 Update mobs_mc 2017-11-03 22:14:27 +01:00
Wuzzy 7055b68f6b Fix armor stand repairing damaged armor 2017-11-03 00:01:15 +01:00
Wuzzy d66de5adfb Reduce frequency of vines ABM to reduce load 2017-11-02 23:52:09 +01:00
Wuzzy 2a8fcd119b Fix vines destruction not destoying hanging vines 2017-11-02 23:42:20 +01:00
Wuzzy 1e2343d649 Make floating vines decay
Also destroy them immediately with leafdecay and when try try to grow but notice they have been floating the whole time.
2017-11-02 23:21:04 +01:00
Wuzzy 71f9250fcf Fix possible item duplication with item frames 2017-11-02 20:52:14 +01:00
Wuzzy 664499313e Generalize Nether portal achievement description 2017-09-19 20:06:57 +02:00
Wuzzy df19ff0a72 Version 0.29.1 2017-09-19 19:53:38 +02:00
Wuzzy b091186421 Revert "Make carpets non-attached"
This reverts commit 10a1379b64.
2017-09-19 19:50:07 +02:00
Wuzzy 10a1379b64 Make carpets non-attached 2017-09-19 19:45:23 +02:00
Wuzzy d9602eb3bc Close chest formspec if chest is destroyed 2017-09-19 19:40:54 +02:00
Wuzzy 0267fc98ab Update desert temple schematic 2017-09-19 19:29:12 +02:00
Wuzzy 0228f77cb2 Show v6 icon for unique red sand recipe 2017-09-19 19:19:07 +02:00
Wuzzy f51c8c75ba Update hudbars mod to 1.10.0 2017-09-19 17:20:47 +02:00
Wuzzy 487281d76b Update hbarmor to 0.4.0 2017-09-19 17:19:39 +02:00
Wuzzy b66c1268d7 Blaze fireball / fire charge: Take fly dir into account when spawning fire 2017-09-19 17:16:04 +02:00
Wuzzy 1d37bec032 Update obsidian help 2017-09-19 15:47:00 +02:00
Wuzzy 70198eb50b Allow to light Nether portal with any fire 2017-09-19 15:45:23 +02:00
Wuzzy 3857ff43ef Fix creation of broken Nether portals 2017-09-19 15:08:46 +02:00
Wuzzy e9b2a26cd4 No double-check of air in portal_nether.lua 2017-09-19 14:15:31 +02:00
Wuzzy 486b84c7c8 Increase sugar canes spread in non-v6 mapgens 2017-09-19 13:51:09 +02:00
Wuzzy d4b7e2f1d6 Update sugar canes swampland biomes 2017-09-19 13:50:07 +02:00
Wuzzy e03a2ee9a2 Make sugar canes less common in v6 2017-09-19 13:47:04 +02:00
Wuzzy 2f0450a0c3 Fix crash and outdated Mesecons API code in mcl_comparators 2017-09-18 23:34:08 +02:00
Wuzzy 39ad79dbe8 Fix Nether portals sometimes being generated out of range 2017-09-15 22:00:03 +02:00
Wuzzy 0af350b439 Make red sand craftable in v6 2017-09-15 21:08:46 +02:00
Wuzzy 602058716f Add achievement for building a Nether portal 2017-09-15 18:03:37 +02:00
Wuzzy efdf87adae Make carpets walkable again 2017-09-15 18:03:19 +02:00
Wuzzy 71274499e7 Version 0.29.0 2017-09-14 03:52:39 +02:00
Wuzzy 4eebd37a12 Minor desert temple randomization 2017-09-14 03:47:48 +02:00
Wuzzy 7f5c051b5d Initialize pressure plates in generate structures 2017-09-14 03:41:06 +02:00
Wuzzy f0adddac12 Update desert temple schematic 2017-09-14 03:21:05 +02:00
Wuzzy a34405b17b Adjust redstone rules of most redstone components 2017-09-14 02:21:46 +02:00
Wuzzy a4b229e565 Update mobs_mc 2017-09-13 23:13:47 +02:00
Wuzzy 15892c6604 Generate random Mese strata based on world seed 2017-09-13 22:50:21 +02:00
Wuzzy 66e1abf1dc Fix Mesa stratum regression 2017-09-13 21:49:06 +02:00
Wuzzy 7dcc39be72 Generate stone below sea level in Mesa-like biomes 2017-09-13 21:43:15 +02:00
Wuzzy 5d70d05dab Tweak double tallgrass/fern amount in non-v6 2017-09-13 19:03:15 +02:00
Wuzzy 6f85cbdbc8 Fix large ferns never generating in v6 jungles 2017-09-13 18:34:19 +02:00
Wuzzy 4098c317e5 Tweak tall grass amount in v6 2017-09-13 18:29:03 +02:00
Wuzzy 12a43a25c8 Generate more tall grass in v6 2017-09-13 17:56:57 +02:00
Wuzzy 0d717dcb69 Update biome TODO 2017-09-13 10:31:41 +02:00
Wuzzy e4a7c10363 Generate more gold ore in Mesa 2017-09-13 10:30:18 +02:00
Wuzzy b11ac0bbe4 Make prismarine crystal crafting cheaper 2017-09-13 06:58:06 +02:00
Wuzzy f1bbb1237b Enable waving small plants and leaves
Caveats: Double plants do not wave
2017-09-13 06:50:54 +02:00
Wuzzy 62e4be98aa Change color of azue bluet 2017-09-13 06:13:29 +02:00
Wuzzy 24fdf4f0bc Localize mcl_dye variables 2017-09-13 06:12:56 +02:00
Wuzzy e9fec6c9f3 Bone meal no longer spawns allium and blue orchid 2017-09-13 05:52:26 +02:00
Wuzzy 78fbb85371 Fix 2 code typos in mcl_mapgen_core 2017-09-13 05:45:27 +02:00
Wuzzy 8ebbfd9ab4 Fix underground and deep ocean biomes for once 2017-09-13 05:41:43 +02:00
Wuzzy 006f27750e Put monster egg and emerald in Extreme Hills only 2017-09-13 04:59:12 +02:00
Wuzzy 3107812ddb Remove Deep Ocean and underground biomes 2017-09-13 04:58:53 +02:00
Wuzzy b09e757a03 Tweak emerald ore and stone monster egg spawn 2017-09-13 04:13:55 +02:00
Wuzzy 0d736c58e8 Fix 2 mistakes in mcl_biomes 2017-09-13 03:58:33 +02:00
Wuzzy 92d0dbdeef Allow to revert back to jungle leaves bushe and fallen logs 2017-09-13 03:15:16 +02:00
Wuzzy b357e927b4 Update jungle bush schematic and use oak leaves 2017-09-13 02:29:09 +02:00
Wuzzy d12533f622 Reduce length of fallen logs to fix floating logs 2017-09-13 01:59:24 +02:00
Wuzzy 88429f70ad Reduce vine threshold in Jungle M biome 2017-09-13 01:57:03 +02:00
Wuzzy cec723d47b Use LuaVoxelManip for vine generation
Important for Jungle M!
2017-09-13 01:47:24 +02:00
Wuzzy 2fce8752f2 Fix incorrect biome IDs in mcl_mapgen_core 2017-09-13 00:36:16 +02:00
Wuzzy 3ccf0a4937 Rebalance jungle biomes, esp. Jungle Edge M
To make is much rarer.
2017-09-13 00:17:39 +02:00
Wuzzy 8245ddcc2c Spawn oaks in Savanna 2017-09-12 21:59:14 +02:00
Wuzzy 76eee3d79e Minor refactor of oak biome trees 2017-09-12 21:54:42 +02:00
Wuzzy b9006512b8 Make sunflowers more common in Sunflower Plains 2017-09-12 21:38:38 +02:00
Wuzzy ebe9b262ed More straight-forward naming convention for biomes 2017-09-12 21:31:33 +02:00
Wuzzy ecccb9d90d Balance all heat and humidity points of all biomes 2017-09-12 20:40:20 +02:00
Wuzzy caedf0649a Fix bedrock/lava/void layers not generating at all
lvm_used was accidentally set to nil by the clay generator. OMG!
2017-09-12 18:09:26 +02:00
Wuzzy 3643e9ac92 Fix some bad variables in mcl_mapgen_core 2017-09-12 08:11:03 +02:00
Wuzzy 50bb82c20f Reduce jungle leaves decay distance back to 4 2017-09-12 05:39:55 +02:00
Wuzzy be135b7066 Tweak button/pressure plate connection sides 2017-09-12 05:37:03 +02:00
Wuzzy 427eb32448 Add a second huge jungle tree schematic, tweak the 1st one 2017-09-12 05:35:02 +02:00
Wuzzy 4d63d5b36d Add higher jungle tree schematic 2017-09-12 05:22:37 +02:00
Wuzzy 4468b53fdd Add Jungle M biome 2017-09-12 05:20:03 +02:00
Wuzzy b86b83cc58 Make pressure plates non-walkable 2017-09-11 18:40:34 +02:00
Wuzzy b5c89dd2f6 Update and fix pressure plate help 2017-09-11 18:38:49 +02:00
Wuzzy c7599fbdf5 Stone pressure plate activates by player/mob only 2017-09-11 18:29:10 +02:00
Wuzzy 151bbed928 Remove redundant pressure plate textures 2017-09-11 17:46:57 +02:00
Wuzzy 27f3b9f3d9 VM: Update liquids after writing to map 2017-09-11 16:26:15 +02:00
Wuzzy bc1e16fbc6 Delete unused WorldEdit code in mcl_structures 2017-09-11 04:26:16 +02:00
Wuzzy b8461596a3 Generate clay in voxelmanip 2017-09-11 04:24:24 +02:00
Wuzzy e7db6f3c89 Generate clay more MC-like
* Diamond shape
* Flat
* Close to water surface
2017-09-11 03:58:07 +02:00
Wuzzy 33e8d1dd99 Rename clay and block of clay 2017-09-11 02:26:43 +02:00
Wuzzy 24abe81409 mcl_mapgen_core: Put all mapgen code into single on_generated
This fixes some mapgen race conditions
2017-09-11 01:59:20 +02:00
Wuzzy 06256f068b Generate witch huts slightly deeper 2017-09-11 01:34:37 +02:00
Wuzzy defffbc952 Fix generating lots of gravel in caves 2017-09-11 01:11:57 +02:00
Wuzzy 0baa563072 Generate witch huts only in swamplands 2017-09-11 00:28:52 +02:00
Wuzzy ee5bbff70c Add sprint key to help 2017-09-10 21:09:04 +02:00
Wuzzy 75aec87b48 Remove weird witch hut debug stuff 2017-09-10 21:05:03 +02:00
Wuzzy 98e5f2b0ba Refactor Minecraft chunk probability code for structures 2017-09-10 20:41:22 +02:00
Wuzzy 98654b45b1 mcl_structures: Return place_schematic return value 2017-09-10 20:20:52 +02:00
Wuzzy 876e2c6eb4 Random rotation for witch huts 2017-09-10 20:16:13 +02:00
Wuzzy 55e8d7503e Rarely generate witch huts (experimental) 2017-09-10 19:14:58 +02:00
Wuzzy 61e0d55311 Update mcl_biomes comments 2017-09-10 17:18:11 +02:00
Wuzzy d715eda723 Fix surface of ice plains spike 2017-09-10 16:55:55 +02:00
Wuzzy 65333ae43c Replace birches with spruce in ice plains 2017-09-10 16:53:33 +02:00
Wuzzy b1065b2247 Use Biome API to turn floating sand to sandstone 2017-09-10 16:44:37 +02:00
Wuzzy 5d3323d094 Generate red sandstone 2017-09-10 15:32:24 +02:00
Wuzzy 84a92817cc Tweak beaches 2017-09-10 15:01:32 +02:00
Wuzzy b7684d2980 Add deep ocean biome 2017-09-10 14:23:52 +02:00
Wuzzy b6c55e1ea2 Revert waterlily texture 2017-09-10 06:49:31 +02:00
Wuzzy 452c720a18 Remove unused mushroom file 2017-09-10 06:48:27 +02:00
Wuzzy 29aa321283 Increase fast mode speed significantly 2017-09-10 06:37:03 +02:00
Wuzzy b70b836efd Tweak Mesa Plateau F biome 2017-09-10 06:34:28 +02:00
Wuzzy 5448669ffd Generate pumpkins in every biome 2017-09-10 06:06:02 +02:00
Wuzzy 81a170645e Don't restrict sugar cane spawn to biomes 2017-09-10 05:45:27 +02:00
Wuzzy 5a69b132c4 Add an Y layer to moss stone boulder schematics 2017-09-10 05:03:20 +02:00
Wuzzy 1938f84c3b Re-introduce Jungle Edge, nerf OP melon spawn 2017-09-10 04:45:43 +02:00
Wuzzy a69f8ca9e1 Make mega spruce taiga much more dense 2017-09-10 04:42:42 +02:00
Wuzzy bc47d542da Disable Jungle Edge M biome for balancing 2017-09-10 04:33:27 +02:00
Wuzzy bd7d57d083 Add Jungle Edge M biome 2017-09-10 03:59:59 +02:00
Wuzzy fb2714d5f1 Add savanna M biome 2017-09-10 03:41:42 +02:00
Wuzzy a14b501f24 Change mesa plateau F ocean appearance 2017-09-10 03:33:06 +02:00
Wuzzy d2cf48022c Remove red desert biome 2017-09-10 03:17:38 +02:00
Wuzzy a02a492b2c Add Mesa Plateau F biome 2017-09-10 03:16:49 +02:00
Wuzzy dfc4a950c6 Remove unused mesa ores 2017-09-10 02:49:02 +02:00
Wuzzy 3ad6b03f68 Generate semi-random mese strata 2017-09-10 02:44:47 +02:00
Wuzzy 18f916f3c5 Refactor and simplify mesa generation code 2017-09-10 00:55:32 +02:00
Wuzzy f0b87379d3 Generate blue orchids only up to Y=5 in v6
But increase noise offset to 0. This spawn strategy emulates swamplands.
2017-09-09 21:05:40 +02:00
Wuzzy 2916b28f87 Comment the biomes code in mcl_biomes 2017-09-09 19:30:22 +02:00
Wuzzy fa75eda9cf Add stone beach biome 2017-09-09 19:01:04 +02:00
Wuzzy 6427c72b95 New biomes: Extreme Hills and 2 variants
Extreme Hills
Extreme Hills+
Extreme Hills M (gravel field)
2017-09-09 11:42:15 +02:00
Wuzzy 44725be4bb Fix fern generating virtually everywhere 2017-09-09 08:17:24 +02:00
Wuzzy 22131e588e Generate the new acacias 2017-09-09 08:15:49 +02:00
Wuzzy f64423e983 Redo acacia schematics completely 2017-09-09 08:06:02 +02:00
Wuzzy 01f5cc7515 Add mega spruces to sapling growth 2017-09-09 05:35:32 +02:00
Wuzzy e433be1472 Add mega taiga spruces and more spruces 2017-09-09 05:04:39 +02:00
Wuzzy 52f22ac58f Make melons rarer in non-v6 mapgens 2017-09-09 01:34:37 +02:00
Wuzzy 0ceecec7c3 Add jungle edge biome 2017-09-09 01:13:21 +02:00
Wuzzy a5a73ea12d Add flower forest beach 2017-09-09 00:30:02 +02:00
Wuzzy edf42043db Generate alliums in flower forest only 2017-09-09 00:22:59 +02:00
Wuzzy f61ecab98e Add flower forest biome 2017-09-09 00:19:24 +02:00
Wuzzy 8182c2f2f7 Fix broken help entries for huge mushroom blocks 2017-09-08 23:07:39 +02:00
Wuzzy c3278d679d Generate giant mushrooms with 1/12 chance 2017-09-08 23:01:04 +02:00
Wuzzy 6d7ef151be Improve huge mushroom schematics, varying height 2017-09-08 22:17:03 +02:00
Wuzzy f9bc27967d Generate lily pads also in 2 node deep water in swamps 2017-09-08 22:04:05 +02:00
Wuzzy 0259353b6f Rework vine gen code and gen vines in swampland 2017-09-08 21:45:22 +02:00
Wuzzy fc2d9b3d32 Add swampland biome 2017-09-08 19:54:24 +02:00
Wuzzy 03ab34405f Rename jungle-related biomes 2017-09-08 18:52:08 +02:00
Wuzzy 4c4ebabea9 Add mushroom island shore 2017-09-08 17:56:04 +02:00
Wuzzy ea9a34337a Freeze water in cold beaches 2017-09-08 17:51:56 +02:00
Wuzzy 8c2b1df005 Only use sand for riverbeds 2017-09-08 17:44:45 +02:00
Wuzzy 96a3474c40 Disable cart spawning cuz error message spam 2017-09-08 16:32:33 +02:00
Wuzzy d55f83346e Fire on bedrock in the End is now eternal 2017-09-08 15:28:38 +02:00
Wuzzy 56e07cd010 Localize liquiddef variable in mcl_buckets 2017-09-08 15:03:56 +02:00
Wuzzy 8f916ac429 Fix 2 variable bugs in mcl_biomes 2017-09-08 07:41:14 +02:00
Wuzzy 237541789b Spawn fossils in fixed height range 2017-09-08 05:49:24 +02:00
Wuzzy 152327bb2a Fossil schematics: ~7% chance to lose bone block 2017-09-08 05:16:12 +02:00
Wuzzy 86db1a8a0e Generate fossils in deserts 2017-09-08 05:06:42 +02:00
Wuzzy 11b56dfb51 Prevent desert temple spawning on beaches 2017-09-08 04:33:30 +02:00
Wuzzy 22a1b0a5d2 Convert desert temple structure to schematic file 2017-09-08 04:30:47 +02:00
Wuzzy 0dd4d501ef Move villages into schematic, fix bad nodes 2017-09-08 03:31:20 +02:00
Wuzzy ef1bce1609 Document fossil schematic sizes 2017-09-08 01:39:14 +02:00
Wuzzy 576a31ac7f Stop fossil schematics replacing air 2017-09-08 01:34:33 +02:00
Wuzzy 8576d36a2c Generate ice spikes in v6 2017-09-08 00:38:55 +02:00
Wuzzy 3db3193494 Disable grass spread functions for snowed dirtlike 2017-09-08 00:13:20 +02:00
Wuzzy 5c906f4af6 Update sounds of snowed dirtlike blocks 2017-09-07 06:57:55 +02:00
Wuzzy 93fdf83c07 Remove saplings from temp helper recipes 2017-09-07 04:43:01 +02:00
Wuzzy 14a276033d v6: Add otherwise ungettable saplings into chests 2017-09-07 04:38:50 +02:00
Wuzzy 196d5a35a7 Remove unused oak schematics 2017-09-07 03:27:22 +02:00
Wuzzy 02679a02df Fix cactus not hurting player if above 2017-09-06 21:42:37 +02:00
Wuzzy 661b586a64 Refactor snow cover code 2017-09-06 19:46:51 +02:00
Wuzzy 9fb148f8bf Make grass block and friends snowed if placed below snow cover 2017-09-06 19:33:39 +02:00
Wuzzy 576af661b1 Refactor code of snowed nodes 2017-09-06 19:19:25 +02:00
Wuzzy b88ae2f1e4 Refactor mcl_mapgen_core and improve mg performace 2017-09-06 08:36:01 +02:00
Wuzzy 9a67b90538 Greatly reduce mapgen stress 2017-09-06 07:12:27 +02:00
Wuzzy 35fa425781 Generate more acacia trees 2017-09-06 06:21:27 +02:00
Wuzzy 62f233eafb Add birch forest biomes 2017-09-06 06:04:32 +02:00
Wuzzy c5d4eb9bed Disable sunflower plains again 2017-09-06 05:25:07 +02:00
Wuzzy a95cec29f3 Balance sunflower plains biome 2017-09-06 05:11:29 +02:00
Wuzzy 2141fb1df7 Clear snowy grass block if not below snow 2017-09-06 05:01:43 +02:00
Wuzzy 47d08ed542 Very rarely make oaks and birches in ice plains 2017-09-06 04:32:49 +02:00
Wuzzy 951cc5366e Generate tall grass in ice plains 2017-09-06 04:11:39 +02:00
Wuzzy 4ba318df32 Rename beach biomes 2017-09-06 03:34:51 +02:00
Wuzzy f5ea645776 Tweak ice spike plains 2017-09-06 03:29:18 +02:00
Wuzzy 55aa01a6fc Fix floting snow on mushrooms in cold taiga 2017-09-06 03:03:02 +02:00
Wuzzy ff8482e556 Fewer matchstick spruces 2017-09-06 02:36:26 +02:00
Wuzzy 73c2d5ca23 Add mega spruce taiga 2017-09-06 02:29:37 +02:00
Wuzzy 0732e9a725 Assign spruces to cold taiga 2017-09-06 01:57:02 +02:00
Wuzzy 916bf70b85 Rename biomes according to MC names 2017-09-06 01:50:39 +02:00
Wuzzy 60fa765cca Don't generate dungeons in v6 2017-09-05 22:55:36 +02:00
Wuzzy d69644fd47 Don't generate lava and bedrock in singlenode 2017-09-05 22:47:48 +02:00
Wuzzy 1a120f2663 Change grass and tallgrass seed in non-v6 mapgens 2017-09-05 21:30:02 +02:00
Wuzzy b1a648c86f Generate much more tall grass in savannas 2017-09-05 21:17:54 +02:00
Wuzzy 0c2bdd2a0d Version 0.28.0 2017-09-05 20:18:49 +02:00
Wuzzy beb72d5436 Replace 3 main menu images to showcase v7 2017-09-05 20:18:15 +02:00
Wuzzy f7b4d87482 Smaller jungle areas without vines 2017-09-05 19:59:13 +02:00
Wuzzy 559e3d68bc Simplify item merge code 2017-09-05 19:17:40 +02:00
Wuzzy 861174dc32 (Hopefully) fix hand rarely dropping as item 2017-09-05 17:25:15 +02:00
Wuzzy 44f4db844e Define get_staticdata of minecart 2017-09-05 15:28:04 +02:00
Wuzzy 63ebc3143c Fix incorrect loading of ballon oak 2017-09-05 15:18:58 +02:00
Wuzzy a31da5efd5 Don't call minetest.add_item for empty itemstring 2017-09-05 15:15:00 +02:00
Wuzzy d8f3a5ee7f Add large oak trees 2017-09-05 08:18:00 +02:00
Wuzzy 1d862ae019 Fix too low spruces 2017-09-05 06:47:30 +02:00
Wuzzy 86921c0968 Tweak many tree schematics
Trunks are now force_place.
More randomness.
2017-09-05 06:41:48 +02:00
Wuzzy bc218b081a Update special spruce schematics 2017-09-05 04:17:35 +02:00
Wuzzy ab2fb7e404 Don't kill mushrooms on podzol and mycelium 2017-09-05 04:03:23 +02:00
Wuzzy 845b5871d4 Remove mcl_temp_schematic_aliases 2017-09-05 03:51:53 +02:00
Wuzzy 594aebfa45 Add new spruce schematics 2017-09-05 03:51:13 +02:00
Wuzzy d419b47198 Generate ice spikes 2017-09-04 06:32:30 +02:00
Wuzzy e02f3071bc Place moss boulders in low levels as well 2017-09-03 14:34:03 +02:00
Wuzzy 79099115da Generate large moss stone boulders in taiga 2017-09-03 07:06:14 +02:00
Wuzzy ebacdd4e22 Update and improve a couple of schematics 2017-09-03 06:38:50 +02:00
Wuzzy 4cfb278187 No longer generate mushrooms next to jungle trees 2017-09-02 19:47:32 +02:00
Wuzzy 8448c72ba7 Fix awkward torch models 2017-09-02 19:28:57 +02:00
Wuzzy 7f393d9cd0 Fix nodes not being placable on top of end portal frame 2017-09-02 19:15:15 +02:00
Wuzzy f95bf371d2 Refine hand error logging 2017-09-02 19:00:04 +02:00
Wuzzy ae74eb3b33 Print error message when player picked up hand
This is __builtin:item with itemstring == "" and should never happen
2017-09-02 18:57:37 +02:00
Wuzzy f449f4637b Add detector rails in railcorridor chests 2017-09-02 17:22:43 +02:00
Wuzzy ba8e02d713 Lift WIP status from detector rail 2017-09-02 17:19:24 +02:00
Wuzzy 77ab3ed9d6 Add more detector rail textures 2017-09-02 17:18:48 +02:00
Wuzzy df023b1b12 Add priliminary end portal frame help 2017-09-02 16:31:10 +02:00
Wuzzy 1ba937d6b8 Make eye of ender placable into end portal frames 2017-09-02 16:28:14 +02:00
Wuzzy 32656bb737 Add bottom end portal frame texture 2017-09-02 16:16:04 +02:00
Wuzzy 86c8387f19 Add end portal frame (nodes only) 2017-09-02 15:49:41 +02:00
Wuzzy e31bce1ff9 New 16×16 animated end portal textures 2017-09-02 14:45:05 +02:00
Wuzzy 10f50d972f Move Nether portal particle texture 2017-09-02 14:20:40 +02:00
Wuzzy 1c9961dbc8 Recolor portal particle 2017-09-02 14:17:58 +02:00
Wuzzy f1f0d0ccc2 Add simplified portal texture 2017-09-02 07:05:25 +02:00
Wuzzy edd57c87f4 Replace Nether portal texture with dummy texture 2017-09-02 06:53:03 +02:00
Wuzzy 92c162250b Simplify selection box for slime block 2017-09-01 20:55:33 +02:00
Wuzzy 56b18a078b Simplified slime block texture by kingoscargames 2017-09-01 00:48:49 +02:00
Wuzzy f75c6dc36d White chicken texture by kingoscargames 2017-09-01 00:42:57 +02:00
Wuzzy 3b7c30fefc Reduce fall damage by 80 on hay bale 2017-08-31 23:27:29 +02:00
Wuzzy 2fed50dbbe Fix crash when drinking milk when damage disabled 2017-08-31 23:13:51 +02:00
Wuzzy c315973648 Add a 3rd huge spruce tree variant 2017-08-31 22:36:02 +02:00
Wuzzy 7a47e0dd6d Remove 2 deprecated vm:update_map functions 2017-08-31 22:34:01 +02:00
Wuzzy 8ee837d158 Make huge spruce trees growable by sapling 2017-08-31 22:16:08 +02:00
Wuzzy 787832429a Shorten fallen logs (long logs cause problems) 2017-08-31 21:09:26 +02:00
Wuzzy 57c3a45248 Add matchstick spruce, generate more spruces 2017-08-31 21:05:04 +02:00
Wuzzy 6b0203f03f Add lollipop spruce 2017-08-31 20:12:44 +02:00
Wuzzy 1442b38f43 Fix wall sign placement taking away 2 signs 2017-08-31 18:47:59 +02:00
Wuzzy 52648bcc16 Add small balloon oak (oak variant)
For ca. every 12 oaks, there is 1 small ballon oak.
2017-08-31 18:33:49 +02:00
Wuzzy e2ac0c79ee Fix some huge mushroom placement issues 2017-08-31 18:18:15 +02:00
Wuzzy a4363b975d Change jungle tree schematic, update jungle biome 2017-08-31 18:04:40 +02:00
Wuzzy 7fcaf68e25 Change jungle floor to grass block 2017-08-31 17:27:58 +02:00
Wuzzy 7be4815697 Tweak Nether gravel ore 2017-08-31 16:28:16 +02:00
Wuzzy 8c9608105c Fix broken fallen log schematic 2017-08-31 15:53:21 +02:00
Wuzzy 8dcb015182 Allow minimap for free in Creative Mode 2017-08-31 14:59:16 +02:00
Wuzzy 6f9d8a5663 Tweak fallen logs; add mushrooms again 2017-08-31 06:07:52 +02:00
Wuzzy 76b9f75223 Fix more double plant conflicts 2017-08-31 05:43:46 +02:00
Wuzzy b866c6bb8d Generate fallen logs after double plants 2017-08-31 05:38:25 +02:00
Wuzzy 0a957ee2ef New oak and birch tree schematics
Also fix broken glacier biome
2017-08-31 04:56:09 +02:00
Wuzzy a124becdea Fix broken mesa biome (too much stone) 2017-08-31 04:15:51 +02:00
Wuzzy aac9af4d6d Tweak biome height limits, fix some biome bugs 2017-08-31 04:10:38 +02:00
Wuzzy e91c5c9d01 Thinner ice sheets 2017-08-31 03:50:36 +02:00
Wuzzy 6fb46629c3 Fix broken leafdecay for jungle bush and acacia 2017-08-31 03:28:32 +02:00
Wuzzy 7d87b6c742 Update sapling help 2017-08-31 02:59:53 +02:00
Wuzzy 195249f300 Lift WIP status from dark oak sapling 2017-08-31 02:44:33 +02:00
Wuzzy b9a5843ec7 Implement proper 2×2 sapling check 2017-08-31 02:44:03 +02:00
Wuzzy 3ef0afd3c0 Fix generated dark oak leaves not decaying 2017-08-31 02:15:09 +02:00
Wuzzy 4f20ab1950 Simplify leafdecay stuff, add leafdecay factoid 2017-08-31 02:06:35 +02:00
Wuzzy 65ec2c9b54 Add simple 2×2 sapling check
Still not fully complete
2017-08-31 01:53:25 +02:00
Wuzzy a5b19bc3a3 Fix bad huge jungle tree schematic 2017-08-31 01:52:48 +02:00
Wuzzy dc8faa69a4 Increase jungle leaves decay distance to 6
(so the huge jungle trees work)
2017-08-31 01:51:25 +02:00
Wuzzy 47161169a6 Refactor tree growing code 2017-08-30 23:23:15 +02:00
Wuzzy 505cdb9d43 Hide minecart with command block from Creative 2017-08-30 21:51:27 +02:00
Wuzzy b2f97fa3cf Reduce flat Nether bedrock thickness to 1 2017-08-30 01:09:49 +02:00
Wuzzy 7df8c14e3f Fix snowy grassland shores 2017-08-30 00:37:57 +02:00
Wuzzy 6aa66cf7db Add jungle bushes 2017-08-30 00:32:11 +02:00
Wuzzy 5b38bb2737 Add back the redstone help 2017-08-29 23:34:02 +02:00
Wuzzy aebe0dec9f Fix some invalid globals in redstone mods 2017-08-29 23:27:20 +02:00
Wuzzy 0daf82a9af Remove unneeded depends.txt 2017-08-29 22:59:22 +02:00
Wuzzy dffc47d8e6 Add acacia schematics 2017-08-29 22:56:22 +02:00
Wuzzy 41e0e6031f Update acacia tree mapgeUpdate acacia tree mapgen 2017-08-29 22:48:16 +02:00
Wuzzy 24f9b47626 Reduce the excessive amount of fallback aliases 2017-08-29 22:47:23 +02:00
Wuzzy c335356723 Use new acacia tree schematic, remove apple tree 2017-08-29 22:39:22 +02:00
Wuzzy 46eb81b245 Make enderman less aggressive and likely 2017-08-29 21:32:04 +02:00
Wuzzy bd74902789 Fix dispenser's bucket support in the Nether 2017-08-29 02:50:46 +02:00
Wuzzy 3a18f4044d Support all minecart types in dispenser 2017-08-29 02:36:50 +02:00
Wuzzy 0795a97dd7 Fix redstone being named “Mesecon” 2017-08-29 01:47:44 +02:00
Wuzzy 2f168f0910 Detector rails are still WIP 2017-08-29 01:35:06 +02:00
Wuzzy 1fd897c721 Implement basic detector rail logic 2017-08-29 01:29:18 +02:00
Wuzzy b85df95bb2 Add dummy nodes: Activator rail, detector rail 2017-08-29 00:13:18 +02:00
Wuzzy abb2db9948 Refactor rails code 2017-08-28 23:41:48 +02:00
Wuzzy f491fbf594 Fix minecarts dependency 2017-08-28 23:14:46 +02:00
Wuzzy 2337d31699 Merge branch 'mesecons_update' 2017-08-28 18:57:12 +02:00
Wuzzy 2f7d3095fd Fix broken help entry for hanging banner 2017-08-28 18:09:30 +02:00
Wuzzy 3d92b19069 Lift WIP status for powered rails 2017-08-28 17:10:09 +02:00
Wuzzy c9856dbcdf Make powered rails act like conductors 2017-08-28 17:06:25 +02:00
Wuzzy 36319afbbe Basic powered rails implementation 2017-08-28 16:59:10 +02:00
Wuzzy 213edbe85c Refactor minecart registration code
Also add doc_identifier support
2017-08-28 15:04:50 +02:00
Wuzzy 1335207e8b Allow to mount only in normal minecarts 2017-08-28 14:35:56 +02:00
Wuzzy f2ed6f126e Add 5 “Minecart with X” entities
* Minecart with Chest
* Minecart with Furnace
* Minecart with TNT
* Minecart with Hopper
* Minecart with Command Block
2017-08-28 14:19:46 +02:00
Wuzzy 840fe1fd35 Add chest entity textures 2017-08-28 14:15:25 +02:00
Wuzzy cc572f9eee Add ex-bart into credits 2017-08-28 02:09:57 +02:00
Wuzzy 882c09a106 WIP status of redstone comparators 2017-08-28 02:08:41 +02:00
Wuzzy 59a04d5ffe Remove 3 redundant comparator help entries 2017-08-28 02:05:31 +02:00
Wuzzy 794fcd4199 Update mesecons code for ex-bart's comparator code 2017-08-28 01:58:18 +02:00
Wuzzy 1d42f568de Rename mcl_comparator to mcl_comparators 2017-08-28 01:58:07 +02:00
Wuzzy 3dcaa83962 Add redstone comparators by ex-bart 2017-08-28 01:51:21 +02:00
Wuzzy 33fa50cc1a Update glass textures by kingoscargames 2017-08-28 01:38:41 +02:00
Wuzzy 6f59b14420 Add all ice to slippery=3 group 2017-08-26 16:00:32 +02:00
Wuzzy bab8e958d2 Add new magma cube texture by kingoscargames 2017-08-24 22:22:41 +02:00
Wuzzy ab7a9566a8 Update global API.md 2017-08-23 16:39:57 +02:00
Wuzzy b902738ed0 Endermen: Check if block was actually placed 2017-08-23 04:53:36 +02:00
Wuzzy e2b57327fe Fix weird-looking cactus when held by enderman 2017-08-23 04:34:06 +02:00
Wuzzy 6d84a139d6 Render enderman's carried block 2017-08-23 03:50:22 +02:00
Wuzzy 9d26db4e67 Version 0.27.2 2017-08-22 18:59:59 +02:00
Wuzzy 0ff6cb2837 Fix broken compass and clocks 2017-08-22 18:58:53 +02:00
Wuzzy 6cd6a525d8 Version 0.27.1 2017-08-22 18:47:59 +02:00
Wuzzy fe31afc119 Disable weather in Nether and End and Void 2017-08-22 18:32:05 +02:00
Wuzzy 7ade843e29 Generate lily pads 2017-08-22 17:40:54 +02:00
Wuzzy 058049897c Drop sugar canes when dirt/etc. below was dug 2017-08-22 17:14:27 +02:00
Wuzzy d7b2f8370e Set proper riverbed nodes for all biomes 2017-08-22 16:17:29 +02:00
Wuzzy 209a2ca678 Generate sugar canes again 2017-08-22 15:57:19 +02:00
Wuzzy 3d1ea57e4b Allow to place sugar canes on sugar canes 2017-08-22 15:20:00 +02:00
Wuzzy 1f8ae56d52 Fix broken enderman take sound 2017-08-22 13:52:49 +02:00
Wuzzy 28337b88c0 Fix desert sand color 2017-08-22 00:30:34 +02:00
Wuzzy 7ed2adec3f Fix End lighting. Kinda 2017-08-22 00:22:53 +02:00
Wuzzy d9aa5f97f6 Add maikerumine to credits 2017-08-21 22:35:17 +02:00
Wuzzy 220d63a3c9 Remove “v6” warning from README 2017-08-21 22:19:31 +02:00
Wuzzy da69da112a Version 0.27.0 2017-08-21 20:38:59 +02:00
Wuzzy 19dc81842f Spawn Nether mushrooms after fire 2017-08-21 19:48:27 +02:00
Wuzzy cc93cd33e2 Ice does not turn into water in the Nether 2017-08-21 19:12:37 +02:00
Wuzzy fbf49a8794 Activate liquid flow again 2017-08-21 18:49:04 +02:00
Wuzzy 757e727b4f Fix cauldrons not working in the Nether 2017-08-21 18:39:41 +02:00
Wuzzy 8d9e46b535 Add flat Nether; fix portals in flat world 2017-08-21 18:30:37 +02:00
Wuzzy 2e63dd0a3d Refactor content IDs in mcl_mapgen_core 2017-08-21 17:57:11 +02:00
Wuzzy 25ce811edc Fix crash in flat mapgen 2017-08-21 17:46:12 +02:00
Wuzzy 9def04142b Align End and Nether height at mapchunk borders
This commit breaks previous maps with Nether and End
2017-08-21 17:35:57 +02:00
Wuzzy 16c1181a47 Destroy fire by flooding 2017-08-21 16:37:21 +02:00
Wuzzy 1189b8d299 Remove more helper recipes 2017-08-21 16:22:37 +02:00
Wuzzy cc15d6be6d Add Nether decorations
Nether wart, eternal fire, mushrooms
2017-08-21 16:16:30 +02:00
Wuzzy b9b151f75e Make v7 flowers more common 2017-08-21 15:24:01 +02:00
Wuzzy 3f123aa282 Make fern more common 2017-08-21 15:18:49 +02:00
Wuzzy 122d6fc5fc Make mushrooms more common 2017-08-21 15:14:33 +02:00
Wuzzy 1ebc34da01 Tweak grass/fern spawning again 2017-08-21 14:22:55 +02:00
Wuzzy 28425ca28a Rename some biomes 2017-08-21 14:14:46 +02:00
Wuzzy 5a8f7cff73 Biomes: Increase filler depths 2017-08-21 14:08:35 +02:00
Wuzzy fde21efdd4 Tweak grass and fern spawning 2017-08-21 14:04:34 +02:00
Wuzzy a622105084 Use classic v6 again 2017-08-21 13:43:16 +02:00
Wuzzy 1b269809a9 Add oak schematic 2017-08-21 13:35:28 +02:00
Wuzzy 9810b0a2ab Generate huge jungle trees, tweak mesa biome 2017-08-21 13:24:42 +02:00
Wuzzy 5ef6cb1f83 Update dark sapling tree growth 2017-08-21 13:02:42 +02:00
Wuzzy b62349bc9f Remove unused jungle tree generation code 2017-08-21 12:50:35 +02:00
Wuzzy 8b4977f1df Remove mapgen warning from footer 2017-08-21 12:36:47 +02:00
Wuzzy cbd8befb47 Fix another walkover bug 2017-08-21 05:25:15 +02:00
Wuzzy f746e2a0c6 Fix walkover mod 2017-08-21 05:19:05 +02:00
Wuzzy 37891e7f40 Tweak huge mushroom spawning 2017-08-21 05:11:45 +02:00
Wuzzy 75cd407e8a Make oak tree forests denser 2017-08-21 05:05:26 +02:00
Wuzzy 2ba19a983a Fix roofed forest riverbed 2017-08-21 04:58:25 +02:00
Wuzzy 67b9deaf88 Add roofed forest with dark oaks 2017-08-21 04:50:45 +02:00
Wuzzy 5766218e57 Tweak Nether portal post effect color 2017-08-21 04:34:50 +02:00
Wuzzy 5302a92baa Fix aggressive 2nd removal after portal generation 2017-08-21 04:31:56 +02:00
Wuzzy abc6352471 Mapgen: Make more use of global reference vars 2017-08-21 04:23:24 +02:00
Wuzzy d77bdffc20 Strictly separate v6 mapgen from other mapgens 2017-08-21 04:14:28 +02:00
Wuzzy 4f03f1c516 Merge branch 'biomes' 2017-08-21 03:43:07 +02:00
Wuzzy dfbc29810a Generate less plants in snowy grassland 2017-08-21 03:35:46 +02:00
Wuzzy 584434cf87 Change cold desert floor cover 2017-08-21 03:27:26 +02:00
Wuzzy 0aebd9955a Use dirt and sand for ocean floor 2017-08-21 03:23:59 +02:00
Wuzzy 0ac05ee847 Fix fern/tallgrass confusion bugs 2017-08-21 03:19:06 +02:00
Wuzzy 4a66e390de Fix missing large plants in v7 etc. 2017-08-21 02:52:38 +02:00
Wuzzy 5f6bc47185 Fix savannah cover 2017-08-21 02:37:29 +02:00
Wuzzy d28e32c7e9 Move mushroom gen to mcl_biomes 2017-08-21 02:35:31 +02:00
Wuzzy a69ab5ec34 Remove fallen log schematics and mushrooms on logs 2017-08-21 02:31:10 +02:00
Wuzzy 1f40c86754 Generate vines and cocoas in v5, v7, etc., too 2017-08-21 02:28:15 +02:00
Wuzzy b34c4ad497 Add important decorations for v7, v5, etc. 2017-08-21 02:25:22 +02:00
Wuzzy dd5730a33d Fix water in the End 2017-08-20 22:18:26 +02:00
Wuzzy 7aa4592f0a Remove worldedit_gui error (delegated to this mod) 2017-08-20 12:35:50 +02:00
Wuzzy c9f277f7e0 Update sky color more often 2017-08-19 11:17:38 +02:00
Wuzzy 2243ee5477 Fix deprecated vel and acc arguments of particles 2017-08-18 23:23:07 +02:00
Wuzzy e2442a6283 Replace deprecated get_entity_name 2017-08-18 22:44:36 +02:00
Wuzzy 4dc1d6b43b Fix outdated get_node_group 2017-08-18 21:36:28 +02:00
Wuzzy e5eec85e53 Update hbarmor 2017-08-18 21:35:02 +02:00
Wuzzy ac55b024b8 Fix accidental global in mcl_core 2017-08-18 21:34:28 +02:00
Wuzzy cfd1456dab Mapgen: Call update_liquids less often 2017-08-18 21:29:25 +02:00
Wuzzy 022682a75e Refactor: Drop legacy get_mapgen_params 2017-08-18 21:25:29 +02:00
Wuzzy 95f62236f7 Fix Nether sky color 2017-08-18 16:40:36 +02:00
Wuzzy 6b2da70ff7 Add End sky texture 2017-08-18 15:39:27 +02:00
Wuzzy 75d6806782 Tweak spawning of shulkers and endermen 2017-08-18 15:32:08 +02:00
Wuzzy 4927bcdc4e Make Nether sky reddish 2017-08-18 15:11:43 +02:00
Wuzzy edfa125d38 Set black sky in Nether and End 2017-08-18 14:54:17 +02:00
Wuzzy a1ed8380c0 Weather overwrites sky in Overworld only 2017-08-18 14:19:43 +02:00
Wuzzy cb1dbcb2db Explain weird End lighting 2017-08-18 14:10:49 +02:00
Wuzzy 12df4c98b4 Minor mcl_biomes refactor 2017-08-18 14:07:35 +02:00
Wuzzy b157c09a4e Replace water in the End 2017-08-18 13:56:26 +02:00
Wuzzy e30719a3bb Fix some mapgen bugs WRT The End 2017-08-18 13:28:20 +02:00
Wuzzy 0a0e66a324 Build obsidian platforms for end portal 2017-08-18 02:57:57 +02:00
Wuzzy 29119d2e2c Generate floating islands in the End 2017-08-18 02:42:26 +02:00
Wuzzy 28a085ae98 Fix broken mapgen overrides in mcl_mapgen_core 2017-08-18 00:53:23 +02:00
Wuzzy f13aa521f6 Make magma blocks much more common 2017-08-18 00:53:07 +02:00
Wuzzy c01c3c5871 Replace water with lava in the Nether 2017-08-18 00:36:31 +02:00
Wuzzy dc1cb9b659 The Nether is now supported in v6, too 2017-08-17 23:58:35 +02:00
Wuzzy 974db12867 Register dimension stuff independent of mapgen 2017-08-17 23:14:02 +02:00
Wuzzy 39f4573294 Randomly spin compass and clock in VoidNetherEnd 2017-08-17 21:26:09 +02:00
Wuzzy c7fc3845c1 Disable compass+clock updates in Nether, End, Void 2017-08-17 20:40:55 +02:00
Wuzzy c97a14e969 Explode bed when used in End or Nether 2017-08-17 20:22:30 +02:00
Wuzzy 3fefbf5fc4 Add realm barrier between End and Overworld void 2017-08-17 19:59:43 +02:00
Wuzzy b2171b7f25 Remove some temp. recipes and lift some WIP items 2017-08-17 19:19:31 +02:00
Wuzzy 987ad8eaf4 Add portal help texts, rewrite help of other items 2017-08-17 19:05:13 +02:00
Wuzzy c178a60a6b Add portal help texts 2017-08-17 18:41:58 +02:00
Wuzzy 14678af2ed Portals: Fix rapid back-and-forth teleportation 2017-08-17 18:14:49 +02:00
Wuzzy 4548f2d19e Add new lever model by Gerold55 2017-07-31 05:35:55 +02:00
Wuzzy 27a3099b56 Make banner a piston stopper 2017-07-31 00:45:10 +02:00
Wuzzy 29037a05a6 Update mesecons_mvps 2017-07-31 00:41:37 +02:00
Wuzzy b299b95fac Update the mesecons mod and dependencies
This touches a lot of the existing Mesecons mods.
Also add mesecons_wires.
2017-07-31 00:12:21 +02:00
1090 changed files with 27728 additions and 14813 deletions

97
API.md
View File

@ -1,36 +1,89 @@
# API
## Groups
MineClone 2 makes very extensive use of groups. Making sure your items and objects are members of the correct group is a good and easy way to ensure compability without using any function calls.
MineClone 2 makes very extensive use of groups. Making sure your items and objects have the correct group memberships is very important.
Groups are explained in `GROUPS.md`.
## APIs for adding simple things
You can add simple things by calling functions in the various MineClone 2 mods.
## Mod naming convention
Mods mods in MineClone 2 follow a simple naming convention: Mods with the prefix “`mcl_`” are specific to MineClone 2, although they may be based on an existing standalone. Mods which lack this prefix are *usually* verbatim copies of a standalone mod. Some modifications may still have been applied, but the APIs are held compatible.
* Fences and fence gates: See `mods/ITEMS/mcl_fences/API.md`.
* Walls: See `mods/ITEMS/mcl_walls/API.md`
## Adding items
### Special fields
### Undocumented APIs
You can also add stuff for the following thins, but the APIs are currently undocumented. These mods are very similar to Minetest Game.
Items can have these fields:
* `_mcl_generate_description(itemstack)`: Required for any items which manipulate their
description in any way. This function takes an itemstack of its own type and must set
the proper advanced description for this itemstack. If you don't do this, anvils will
fail at properly restoring the description when their custom name gets cleared at an
anvil.
See `mcl_banners` for an example.
* Doors: See `mods/ITEMS/doors`
* Stairs and slabs: See `mods/ITEMS/stairs` and `mods/ITEMS/mcstair`
* Beds: See `mods/ITEMS/beds`
* Buckets (for new liquids): See `mods/ITEMS/bucket`
* Panes (like glass panes and iron bars): See `mods/ITEMS/xpanes`
All nodes can have these fields:
WARNING! These 5 mods may be renamed or changed in future releases, and compability could be broken.
* `_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_after_falling(pos)`: Called after a falling node finished falling and turned into a node.
Use the `mcl_sounds` mod for the sounds.
## APIs
A lot of things are possible by using one of the APIs in the mods. Note that not all APIs are documented yet, but it is planned. The following APIs should be more or less stable but keep in mind that MineClone 2 is still unfinished. All directory names are relative to `mods/`
### Items
* Doors: `ITEMS/mcl_doors`
* Fences and fence gates: `ITEMS/mcl_fences`
* Stairs and slabs: `ITEM/mcl_stairs`
* Walls: `ITEMS/mcl_walls`
* Beds: `ITEMS/mcl_beds`
* Buckets: `ITEMS/mcl_buckets`
* Dispenser support: `ITEMS/REDSTONE/mcl_dispensers`
## Mobs
This mod uses Mobs Redo [`mobs`] by TenPlus1, a very powerful mod for adding mods of various kinds.
There are minor modificiations for MineClone 2 compability and some items have been removed or moved to other mods, but the API is identical to the original.
* Mobs: `ENTITIES/mcl_mods`
MineClone 2 uses its own mobs framework, called “Mobs Redo: MineClone 2 Edition” or “MRM” for short.
This is a fork of Mobs Redo [`mobs`] by TenPlus1.
You can add your own mobs, spawn eggs and spawning rules with this mod.
API documnetation is included in `mods/ENTITIES/mobs/api.txt`.
API documnetation is included in `ENTITIES/mcl_mobs/api.txt`.
Note that mobs in MineClone 2 are still very experimental, everything about mobs may change radically at any time!
This mod includes modificiations from the original Mobs Redo. Some items have been removed or moved to other mods.
The API is mostly identical, but a few features have been added. Compability is not really a goal,
but function and attribute names of Mobs Redo 1.41 are kept.
If you have code for a mod which works fine under Mobs Redo, it should be easy to make it work in MineClone 2,
chances are good that it works out of the box.
## Other APIs
* Statbars / HUD bars: See `mods/HUD/hudbars`
* Hunger: See `mods/PLAYER/mcl_hunger/API.md`
### Help
* Item help texts: `HELP/doc/doc_items`
* Low-level help entry and category framework: `HELP/doc/doc`
* Support for lookup tool (required for all entities): `HELP/doc/doc_identifier`
## Other things of interest
Mods found in `mods/CORE` contain important core APIs and utility functions, used throughout the subgame.
### HUD
* Statbars: `HUD/hudbars`
### Utility APIs
* Change player physics: `PLAYER/playerphysics`
* Select random treasures: `CORE/mcl_loot`
* Get flowing direction of liquids: `CORE/flowlib`
* `on_walk_over` callback for nodes: `CORE/walkover`
* Get node names close to player (to reduce constant querying): `PLAYER/mcl_playerinfo`
### Unstable APIs
The following APIs may be subject to change in future. You could already use these APIs but there will probably be breaking changes in the future, or the API is not as fleshed out as it should be. Use at your own risk!
* Panes (like glass panes and iron bars): `ITEMS/xpanes`
* `_on_ignite` callback: `ITEMS/mcl_fire`
* Farming: `ITEMS/mcl_farming`
* Anything related to redstone: Don't touch (yet)
* Any other mod not explicitly mentioned above
### Planned APIs
* Flowers
* Saplings and trees
* Custom banner patterns
* Custom dimensions
* Custom portals
* Music discs
* Dispenser and dropper support
* Proper sky and weather APIs
* Explosion API

View File

@ -14,7 +14,7 @@ channel on irc.freenode.net. And finally, you can send e-mails to
There is **no** guarantee I will accept anything from anybody.
By sending me patches or asking me to include your changes in this subgame,
By sending me patches or asking me to include your changes in this game,
you agree that they fall under the terms of the LGPLv2.1, which basically
means they will become part of a free software.
@ -70,4 +70,4 @@ Depending on what you add, the chances for inclusion vary:
## Reporting bugs
Report all bugs and missing Minecraft features here:
<https://github.com/Wuzzy2/MineClone2-Bugs>
<https://git.minetest.land/Wuzzy/MineClone2-Bugs>

View File

@ -1,5 +1,5 @@
## Groups
This document explains all the groups used in this subgame.
This document explains all the groups used in this game.
### Special groups
@ -29,6 +29,8 @@ Please read <http://minecraft.gamepedia.com/Breaking> to learn how digging times
### Groups for interactions
* `crush_after_fall=1`: For falling nodes. These will crush whatever they hit after falling, not dropping as an item
* `falling_node_damage=1`: For falling nodes. Hurts any objects it hits while falling. Damage is based on anvils
* `dig_by_water=1`: Blocks with this group will drop when they are near flowing water
* `destroy_by_lava_flow=1`: Blocks with this group will be destroyed by flowing lava
* `dig_by_piston=1`: Blocks which will drop as an item when pushed by a piston. They also cannot be pulled by sticky pistons
@ -36,7 +38,8 @@ Please read <http://minecraft.gamepedia.com/Breaking> to learn how digging times
* `cultivatable=1`: Block will be turned into Dirt by using a hoe on it
* `flammable`: Block helps spreading fire and gets destroyed by nearby fire (rating doesn't matter)
* `spreading_dirt_type=1`: A dirt-type block with a cover (e.g. grass) which may spread to neighbor dirt blocks
* `dirtifies_below_solid=1`: This node turns into dirt immediately when a solid node is placed on top
* `dirtifies_below_solid=1`: This node turns into dirt immediately when a solid or dirtifier node is placed on top
* `dirtifier=1`: This node turns nodes the above group into dirt when placed above
* `non_mycelium_plant=1`: A plant which can't grow on mycelium. Placing it on mycelium fails and if mycelium spreads below it, it uproots
* `soil=1`: Saplings and other small plants can grow on it
* `soil_sapling=2`: Soil for saplings. Intended to be natural soil. All saplings will grow on this
@ -48,6 +51,11 @@ Please read <http://minecraft.gamepedia.com/Breaking> to learn how digging times
* `destroys_items=1`: If an item happens to be *inside* this node, the item will be destroyed
* `no_eat_delay=1`: Only for foodstuffs. When eating this, all eating delays are ignored.
* `can_eat_when_full=1`: Only for foodstuffs. This item can be eaten when the user has a full hunger bar
* `attached_node_facedir=1`: Like `attached_node`, but for facedir nodes
* `cauldron`: Cauldron. 1: Empty. 2-4: Water height
* `anvil`: Anvil. 1: No damage. 2-3: Higher damage levels
* `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.
#### Footnotes
@ -71,6 +79,7 @@ Please read <http://minecraft.gamepedia.com/Breaking> to learn how digging times
* `wool=1`: Wool (only full blocks)
* `carpet=1:` (Wool) carpet
* `stick=1`: Stick
* `water_bucket=1`: Bucket containing a liquid of group “water”
### Material groups
@ -89,10 +98,12 @@ These groups are used mostly for informational purposes
* `solid=1`: Solid full-cube block (automatically assigned)
* `opaque=1`: Opaque block (automatically assigned)
* `not_solid=1`: Block is sold (only assign this group for nodes which are automatically detected as “solid” in error
* `not_solid=1`: Block is not solid (only assign this group for nodes which are automatically detected as “solid” in error
* `not_opaque=1`: Block is not opaque (only assign this group for nodes which are automatically detected as “opaque” in error
* `fire=1`: Fire
* `water=1`: Water
* `lava=1`: Lava
* `top_snow=X`: Top snow with X layers (1-8)
* `torch`: Torch or torch-like node
* `torch=1`: Torch on floor
* `torch=2`: Torch at wall
@ -109,6 +120,7 @@ These groups are used mostly for informational purposes
* `flower_pot=2`: Flower pot with a plant or flower
* `flower=1`: Flower
* `place_flowerlike=1`: Node has placement rules like that of a flower
* `place_flowerlike=2`: Node has placement rules like tall grass
* `cake`: Cake (rating = slices left)
* `book=1`: Book
* `pane=1`: Node is a “pane”-like node glass pane or iron bars
@ -140,12 +152,27 @@ These groups are used mostly for informational purposes
* `container=5`: Left part of a 2-part horizontal connected container. Both parts have a `"main"` inventory
list. Both inventories are considered to belong together. This is used for large chests.
* `container=6`: Same as above, but for the right part.
* `container=7`: Has inventory list "`main`", no movement allowed
* `container=1`: Other/unspecified container type
* `spawn_egg=1`: Spawn egg
* `pressure_plate=1`: Pressure plate (off)
* `pressure_plate=2`: Wooden pressure (on)
* `button=1`: Button (off)
* `button=2`: Button (on)
* `redstone_torch=1`: Redstone Torch (lit)
* `redstone_torch=2`: Redstone Torch (unlit)
* `plant=1`: Plant or part of a plant
* `double_plant`: Part of a double-sized plant. 1 = lower part, 2 = upper part
* `pickaxe=1`: Pickaxe
* `shovel=1`: Shovel
* `axe=1`: Axe
* `sword=1`: Sword
* `hoe=1`: Hoe (farming tool)
* `shears=1`: Shears
* `weapon=1`: Item is primarily (!) a weapon
* `tool=1`: Item is primarily (!) a tool
* `craftitem=1`: Item is primarily (!) used for crafting

View File

@ -2,7 +2,7 @@
An unofficial Minecraft-like game for Minetest. Forked from MineClone by daredevils.
Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB.
Version: 0.26.0
Version: 0.46.0
### Gameplay
You start in a randomly-generated world made entirely of cubes. You can explore
@ -27,7 +27,6 @@ Or you can play in “creative mode” in which you can build almost anything in
## How to play (quick start)
### Getting started
* **Use the world generator “v6”!**
* **Punch a tree** trunk until it breaks and collect wood
* Place the **wood into the 2×2 grid** (your “crafting grid” in your inventory menu and craft 4 wood planks
* Place the 4 wood planks in a 2×2 shape in the crafting grid to **make a crafting table**
@ -56,23 +55,31 @@ Or you can play in “creative mode” in which you can build almost anything in
More help about the gameplay, blocks items and much more can be found from inside
the game. You can access the help from your inventory menu.
### Special blocks
The following blocks are interesting for Creative Mode and for adventure
### Special items
The following items are interesting for Creative Mode and for adventure
map builders. They can not be obtained in-game or in the creative inventory.
* Barrier: `mcl_core:barrier`
* Command Block: `mesecons_commandblock:commandblock_off`
* Monster Spawner (WIP): `mcl_mobspawners:spawner`
* Huge mushroom blocks: See `mods/ITEMS/mcl_mushrooms/README.md`
Use the `/giveme` chat command to obtain them. See the in-game help for
an explanation.
#### Incomplete items
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 Furnace: `mcl_minecarts:furnace_minecart`
* Minecart with Hopper: `mcl_minecarts:hopper_minecart`
* Minecart with Command Block: `mcl_minecarts:command_block_minecart`
## Installation
This game requires [Minetest](http://minetest.net) 0.4.16 (or later) to run,
so you need to install Minetest first. Only stable versions of Minetest are
officially supported. There is no support whatsoever for running MineClone 2
in development versions of Minetest.
This game requires [Minetest](http://minetest.net) to run
(version 0.4.16 or 0.4.17).
So you need to install Minetest first. Only stable versions of Minetest are
officially supported. Minetest 5.0.0 (when released) will NOT be supported (yet).
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
your Minetest data directory. Consult the help of Minetest to learn more.
@ -89,22 +96,26 @@ The main goal of **MineClone 2** is to be a clone of Minecraft and to be release
## Completion status
This game is currently in **alpha** stage.
It is playable, but very unfinished, many bugs are to be expected.
It is playable, but unfinished, many bugs are to be expected.
Backwards-compability is *not* guaranteed, updating your world might cause small and
big bugs (such as “missing node” errors or even crashes).
The following main features are available:
* Tools, weapons and armor
* Tools, weapons
* Armor (unbalanced)
* Crafting system: 2×2 grid, crafting table (3×3 grid), furnace, including a crafting guide
* Chests, large chests, ender chests, shulker boxes
* Furnaces, hoppers
* Hunger
* Most monsters and animals
* All ores from Minecraft
* Most blocks in the overworld
* Water and lava
* Weather
* Redstone circuits (partially): Redstone ore, redstone, redstone repeater, levers, buttons, redstone blocks, redstone lamps
* 28 biomes
* The Nether, a fiery underworld in another dimension
* Redstone circuits (partially)
* Minecarts (partial)
* Boats
* Fire
@ -123,24 +134,22 @@ The following main features are available:
* Inventory menu
* Creative inventory
* Farming
* Bookshelves (deco only)
* Writable books
* A few server commands
* And more!
The following features are incomplete:
* Trees, biomes, generated structures
* Generated structures (especially villages)
* NPCs
* Some monsters and animals
* Some redstone-related things
* The Nether
* Redstone-related things
* The End
* Enchanting
* Experience
* Status effects
* Brewing, potions, tipped arrows
* Anvil
* Special minecarts
* A couple of non-trivial blocks and items
Bonus features (not found in Minecraft 1.11):
@ -148,24 +157,33 @@ Bonus features (not found in Minecraft 1.11):
* Built-in crafting guide which shows you crafting and smelting recipes
* In-game help system containing extensive help about gameplay basics, blocks, items and more
* Temporary crafting recipes. They only exist to make some otherwise unaccessible items available when you're not in creative mode. These recipes will be removed as development goes on an more features become available
* Saplings in chests in mapgen v6
* Fully moddable (thanks to Minetest's powerful Lua API)
* New blocks and items:
* Lookup tool, shows you the help for whatever it touches
* More slabs and stairs
* Nether Brick Fence Gate
* Red Nether Brick Fence
* Red Nether Brick Fence Gate
Technical differences from Minecraft:
* Height limit of ca. 31000 blocks (much higher than in Minecraft)
* Horizontal world size is ca. 62000×62000 blocks (much smaller than in Minecraft, but it is still very large)
* Still very, very incomplete and buggy
* Still very incomplete and buggy
* Blocks, items, enemies and other features are missing
* A few items have slightly different names to make them easier to distinguish
* Different music for jukebox
* Different textures (Pixel Perfection)
* Different sounds (various sources)
* Different engine (Minetest)
* Free software (“free” as in freedom *and* free beer)
… and finally, MineClone 2 is free software (“free” as in “freedom”)!
## Reporting bugs
Please report all bugs and missing Minecraft features here:
<https://github.com/Wuzzy2/MineClone2-Bugs>
<https://git.minetest.land/Wuzzy/MineClone2-Bugs>
## Other readme files
@ -180,6 +198,7 @@ There are so many people to list (sorry). Check out the respective mod directori
### Coding
* [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
* [ex-bart](https://github.com/ex-bart): Redstone comparators
* Lots of other people: TO BE WRITTEN (see mod directories for details)
### Textures
@ -207,6 +226,7 @@ Various sources. See the respective mod directories for details.
* Notch and Jeb for being the major forces behind Minecraft
* XSSheep for creating the Pixel Perfection resource pack
* [22i](https://github.com/22i) for providing great models and support
* [maikerumine](http://github.com/maikerumine) for kicking off mobs and biomes
## Info for programmers
You find interesting and useful infos in `API.md`.
@ -216,7 +236,7 @@ This project is currently mostly a one-person project.
This is a fan game, not developed or endorsed by Mojang AB.
Copying is an act of love. Please copy and share! <3
But, oh well, if you insist, here is the legalese for you:
Here's the detailed legalese for those who need it:
### License of source code
MineClone 2 is a clean-room implementation of Minecraft
@ -235,18 +255,14 @@ No non-free licenses are used anywhere.
The textures, unless otherwise noted, are based on the Pixel Perfection resource pack for Minecraft 1.11,
authored by XSSheep. Most textures are verbatim copies, while some textures have been changed or redone
from scratch.
The glazed terracotta textures have been created by (MysticTempest)[https://github.com/MysticTempest].
Source: <https://www.planetminecraft.com/texture_pack/131pixel-perfection/>
License: [CC BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)
MineClone 2 is currently in the processs of changing all the textures.
The textures for the glazed terracotta come from Faithful Vanilla.
(authored by Vattic, xMrVizzy and many others).
Source: <https://minecraft.curseforge.com/projects/faithful-vanilla>
License of all main menu images: WTFPL
The main menu images are release under: [CC0](https://creativecommons.org/publicdomain/zero/1.0/)
All other files, unless mentioned otherwise, fall under:
Attribution-ShareAlike 3.0 Unported (CC BY-SA 4.0)
Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 4.0)
http://creativecommons.org/licenses/by-sa/4.0/
See README.txt in each mod directory for detailed information about other authors.

1
description.txt Normal file
View File

@ -0,0 +1 @@
A survival sandbox game. Survive, gather, hunt, mine, build, explore, and do much more. Faithful clone of Minecraft 1.11. This is a work in progress! Expect bugs!

View File

@ -1 +1,2 @@
name = MineClone 2
description = A survival sandbox game. Survive, gather, hunt, build, explore, and do much more.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 865 B

After

Width:  |  Height:  |  Size: 628 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 KiB

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 118 KiB

View File

@ -8,7 +8,7 @@ movement_acceleration_air = 1.2
movement_speed_walk = 4.317
movement_speed_crouch = 1.295
movement_speed_fast = 10.89
movement_speed_fast = 25.0
movement_speed_jump = 6.6
movement_speed_climb = 2.35
@ -16,7 +16,7 @@ movement_speed_climb = 2.35
movement_liquid_fluidity = 1.13
movement_liquid_fluidity_smooth = 0.5
movement_liquid_sink = 31
movement_liquid_sink = 23
movement_gravity = 10.4

View File

@ -0,0 +1,10 @@
This mod automatically adds groups to items based on item metadata.
Specifically, this mod has 2 purposes:
1) Automatically adding the group “solid” for blocks considered “solid” in Minecraft.
2) Generating digging time group for all nodes based on node metadata (it's complicated)
See init.lua for more infos.
The leading underscore in the name “_mcl_autogroup” was added to force Minetest to load this mod as late as possible.
As of 0.4.16, Minetest loads mods in reverse alphabetical order.

View File

@ -0,0 +1 @@
MineClone 2 core mod which automatically adds groups to all items. Very important for digging times.

View File

@ -1,11 +1,3 @@
--[[ This mod automatically adds groups to items based on item metadata.
Specifically, this mod has 2 purposes:
1) Automatically adding the group solid for blocks considered solid in Minecraft.
2) Generating digging time group for all nodes based on node metadata (it's complicated)
]]
--[[ Mining times. Yeah, mining times … Alright, this is going to be FUN!
This mod does include a HACK to make 100% sure the digging times of all tools match Minecraft's perfectly.
@ -82,7 +74,8 @@ local overwrite = function()
groups_changed = true
end
-- Automatically assign the “opaque” group for opaque nodes
if not (ndef.paramtype == "light" or ndef.sunlight_propagates) then
if (not (ndef.paramtype == "light" or ndef.sunlight_propagates)) and
(ndef.groups.not_opaque == 0 or ndef.groups.not_opaque == nil) then
newgroups.opaque = 1
groups_changed = true
end

View File

@ -0,0 +1 @@
name = _mcl_autogroup

504
mods/CORE/controls/LICENSE Normal file
View File

@ -0,0 +1,504 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random
Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

View File

@ -0,0 +1,2 @@
Controls framework by Arcelmi.
https://github.com/Arcelmi/minetest-controls

View File

@ -0,0 +1,63 @@
controls = {}
controls.players = {}
controls.registered_on_press = {}
function controls.register_on_press(func)
controls.registered_on_press[#controls.registered_on_press+1] = func
end
controls.registered_on_release = {}
function controls.register_on_release(func)
controls.registered_on_release[#controls.registered_on_release+1] = func
end
controls.registered_on_hold = {}
function controls.register_on_hold(func)
controls.registered_on_hold[#controls.registered_on_hold+1]=func
end
minetest.register_on_joinplayer(function(player)
local name = player:get_player_name()
controls.players[name] = {
jump={false},
right={false},
left={false},
LMB={false},
RMB={false},
sneak={false},
aux1={false},
down={false},
up={false}
}
end)
minetest.register_on_leaveplayer(function(player)
local name = player:get_player_name()
controls.players[name] = nil
end)
minetest.register_globalstep(function(dtime)
for _, player in pairs(minetest.get_connected_players()) do
local player_name = player:get_player_name()
local player_controls = player:get_player_control()
for cname, cbool in pairs(player_controls) do
--Press a key
if cbool==true and controls.players[player_name][cname][1]==false then
for _, func in pairs(controls.registered_on_press) do
func(player, cname)
end
controls.players[player_name][cname] = {true, os.clock()}
elseif cbool==true and controls.players[player_name][cname][1]==true then
for _, func in pairs(controls.registered_on_hold) do
func(player, cname, os.clock()-controls.players[player_name][cname][2])
end
--Release a key
elseif cbool==false and controls.players[player_name][cname][1]==true then
for _, func in pairs(controls.registered_on_release) do
func(player, cname, os.clock()-controls.players[player_name][cname][2])
end
controls.players[player_name][cname] = {false}
end
end
end
end)

View File

@ -0,0 +1 @@
name=controls

View File

@ -0,0 +1 @@
Adds additional ways for nodes to be attached.

View File

@ -0,0 +1,24 @@
local original_function = minetest.check_single_for_falling
minetest.check_single_for_falling = function(pos)
local ret_o = original_function(pos)
local ret = false
local node = minetest.get_node(pos)
if minetest.get_item_group(node.name, "attached_node_facedir") ~= 0 then
local dir = minetest.facedir_to_dir(node.param2)
local cpos = vector.add(pos, dir)
local cnode = minetest.get_node(cpos)
if minetest.get_item_group(cnode.name, "solid") == 0 then
minetest.remove_node(pos)
local drops = minetest.get_node_drops(node.name, "")
for dr=1, #drops do
minetest.add_item(pos, drops[dr])
end
ret = true
end
end
return ret_o or ret
end

View File

@ -1 +0,0 @@
name = mcl_autogroup

View File

@ -11,7 +11,10 @@ mcl_vars.inventory_header = mcl_vars.gui_slots .. mcl_vars.gui_bg
-- Mapgen variables
local mg_name = minetest.get_mapgen_setting("mg_name")
local minecraft_height_limit = 256
if mg_name ~= "flat" then
local superflat = mg_name == "flat" and minetest.get_mapgen_setting("mcl_superflat_classic") == "true"
if not superflat then
-- Normal mode
--[[ Realm stacking (h is for height)
- Overworld (h>=256)
- Void (h>=1000)
@ -32,39 +35,57 @@ if mg_name ~= "flat" then
mcl_vars.mg_bedrock_is_rough = true
else
-- Classic superflat
local ground = minetest.get_mapgen_setting("mgflat_ground_level")
ground = tonumber(ground)
if not ground then
ground = 8
end
-- 1 perfectly flat bedrock layer
if minetest.get_mapgen_setting("mcl_superflat_classic") == "false" then
mcl_vars.mg_overworld_min = -30912
else
mcl_vars.mg_overworld_min = ground - 3
end
mcl_vars.mg_overworld_min = ground - 3
mcl_vars.mg_overworld_max_official = mcl_vars.mg_overworld_min + minecraft_height_limit
mcl_vars.mg_bedrock_overworld_min = mcl_vars.mg_overworld_min
mcl_vars.mg_bedrock_overworld_max = mcl_vars.mg_bedrock_overworld_min
mcl_vars.mg_lava = false
mcl_vars.mg_lava_overworld_max = mcl_vars.mg_overworld_min
mcl_vars.mg_bedrock_is_rough = false
end
mcl_vars.mg_overworld_max = 31000
-- The Nether
mcl_vars.mg_nether_min = -29000
-- The Nether (around Y = -29000)
mcl_vars.mg_nether_min = -29067 -- Carefully chosen to be at a mapchunk border
mcl_vars.mg_nether_max = mcl_vars.mg_nether_min + 128
mcl_vars.mg_bedrock_nether_bottom_min = mcl_vars.mg_nether_min
mcl_vars.mg_bedrock_nether_bottom_max = mcl_vars.mg_bedrock_nether_bottom_min + 4
mcl_vars.mg_bedrock_nether_top_max = mcl_vars.mg_nether_max
mcl_vars.mg_bedrock_nether_top_min = mcl_vars.mg_bedrock_nether_top_max - 4
mcl_vars.mg_lava_nether_max = mcl_vars.mg_nether_min + 31
if not superflat then
mcl_vars.mg_bedrock_nether_bottom_max = mcl_vars.mg_bedrock_nether_bottom_min + 4
mcl_vars.mg_bedrock_nether_top_min = mcl_vars.mg_bedrock_nether_top_max - 4
mcl_vars.mg_lava_nether_max = mcl_vars.mg_nether_min + 31
else
-- Thin bedrock in classic superflat mapgen
mcl_vars.mg_bedrock_nether_bottom_max = mcl_vars.mg_bedrock_nether_bottom_min
mcl_vars.mg_bedrock_nether_top_min = mcl_vars.mg_bedrock_nether_top_max
mcl_vars.mg_lava_nether_max = mcl_vars.mg_nether_min + 2
end
if mg_name == "flat" then
if superflat then
mcl_vars.mg_flat_nether_floor = mcl_vars.mg_bedrock_nether_bottom_max + 4
mcl_vars.mg_flat_nether_ceiling = mcl_vars.mg_bedrock_nether_bottom_max + 52
else
mcl_vars.mg_flat_nether_floor = mcl_vars.mg_lava_nether_max + 4
mcl_vars.mg_flat_nether_ceiling = mcl_vars.mg_lava_nether_max + 52
end
end
-- The End
mcl_vars.mg_end_min = mcl_vars.mg_nether_max + 2000
-- The End (surface at ca. Y = -27000)
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 = mcl_vars.mg_overworld_min - 2000
mcl_vars.mg_end_platform_pos = { x = 100, y = mcl_vars.mg_end_min + 80, z = 0 }
-- 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_min = mcl_vars.mg_end_max - 11
-- Set default stack sizes
minetest.nodedef_default.stack_max = 64

View File

@ -98,3 +98,57 @@ function mcl_loot.get_multi_loot(multi_loot_definitions, pr)
end
return items
end
--[[
Returns a table of length `max_slot` and all natural numbers between 1 and `max_slot`
in a random order.
]]
local function get_random_slots(max_slot)
local slots = {}
for s=1, max_slot do
slots[s] = s
end
local slots_out = {}
while #slots > 0 do
local r = math.random(1, #slots)
table.insert(slots_out, slots[r])
table.remove(slots, r)
end
for s=1, #slots_out do
print(slots_out[s])
end
return slots_out
end
--[[
Puts items in an inventory list into random slots.
* inv: InvRef
* listname: Inventory list name
* items: table of items to add
Items will be added from start of the table to end.
If the inventory already has occupied slots, or is
too small, placement of some items might fail.
]]
function mcl_loot.fill_inventory(inv, listname, items)
local size = inv:get_size(listname)
local slots = get_random_slots(size)
local leftovers = {}
-- 1st pass: Add items into random slots
for i=1, math.min(#items, size) do
local item = items[i]
local slot = slots[i]
local old_item = inv:get_stack(listname, slot)
local leftover = old_item:add_item(item)
inv:set_stack(listname, slot, old_item)
if not leftover:is_empty() then
table.insert(leftovers, item)
end
end
-- 2nd pass: If some items couldn't be added in first pass,
-- try again in a non-random fashion
for l=1, math.min(#leftovers, size) do
inv:add_item(listname, leftovers[l])
end
-- If there are still items left, tough luck!
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 B

View File

@ -75,6 +75,10 @@ Voxelands project <http://www.voxelands.com/> (CC BY-SA 3.0)
(Note: Artists from the Voxelands project include: sdzen, darkrose, sapier,
Tom Peter, Telaron, juskiddink)
Michel Baradari <https://opengameart.org/content/lava-splash> (CC BY 3.0)
default_place_node_lava.ogg
Adam_N (CC0 1.0):
player_falling_damage.ogg
Source: <https://www.freesound.org/people/Adam_N/sounds/346692/>

View File

@ -134,3 +134,21 @@ function mcl_sounds.node_sound_water_defaults(table)
mcl_sounds.node_sound_defaults(table)
return table
end
function mcl_sounds.node_sound_lava_defaults(table)
table = table or {}
-- TODO: Footstep
table.place = table.place or
{name = "default_place_node_lava", gain = 1.0}
table.dug = table.dug or
{name = "default_place_node_lava", gain = 1.0}
-- TODO: Different dug sound
mcl_sounds.node_sound_defaults(table)
return table
end
-- Player death sound
minetest.register_on_dieplayer(function(player)
-- TODO: Add separate death sound
minetest.sound_play({name="player_damage", gain = 1.0}, {pos=player:get_pos(), max_hear_distance=16})
end)

View File

@ -149,7 +149,7 @@ function mcl_util.get_eligible_transfer_item_slot(src_inventory, src_list, dst_i
return nil
end
-- Returns true if given itemstack is a shulker box
-- Returns true if itemstack is a shulker box
local is_not_shulker_box = function(itemstack)
local g = minetest.get_item_group(itemstack:get_name(), "shulker_box")
return g == 0 or g == nil
@ -205,6 +205,11 @@ function mcl_util.move_item_container(source_pos, destination_pos, source_list,
local dctype = minetest.get_item_group(dnode.name, "container")
local sctype = minetest.get_item_group(snode.name, "container")
-- Container type 7 does not allow any movement
if sctype == 7 then
return false
end
-- Normalize double container by forcing to always use the left segment first
local normalize_double_container = function(pos, node, ctype)
if ctype == 6 then
@ -235,7 +240,7 @@ function mcl_util.move_item_container(source_pos, destination_pos, source_list,
-- Default source lists
if not source_list then
-- Main inventory for most container types
if sctype == 2 or sctype == 3 or sctype == 5 or sctype == 6 then
if sctype == 2 or sctype == 3 or sctype == 5 or sctype == 6 or sctype == 7 then
source_list = "main"
-- Furnace: output
elseif sctype == 4 then
@ -281,13 +286,17 @@ function mcl_util.move_item_container(source_pos, destination_pos, source_list,
return false
end
end
-- Container type 7 does not allow any placement
if dctype == 7 then
return false
end
-- If it's a container, put it into the container
if dctype ~= 0 then
-- Automatically select a destination list if omitted
if not destination_list then
-- Main inventory for most container types
if dctype == 2 or dctype == 3 or dctype == 5 or dctype == 6 then
if dctype == 2 or dctype == 3 or dctype == 5 or dctype == 6 or dctype == 7 then
destination_list = "main"
-- Furnace source slot
elseif dctype == 4 then
@ -331,68 +340,13 @@ function mcl_util.is_fuel(item)
return minetest.get_craft_result({method="fuel", width=1, items={item}}).time ~= 0
end
-- For a given position, returns a 2-tuple:
-- 1st return value: true if pos is in void
-- 2nd return value: true if it is in the deadly part of the void
function mcl_util.is_in_void(pos)
local void =
not ((pos.y < mcl_vars.mg_overworld_max and pos.y > mcl_vars.mg_overworld_min) or
(pos.y < mcl_vars.mg_nether_max and pos.y > mcl_vars.mg_nether_min) or
(pos.y < mcl_vars.mg_end_max and pos.y > mcl_vars.mg_end_min))
local void_deadly = false
local deadly_tolerance = 64 -- the player must be this many nodes “deep” into the void to be damaged
if void then
-- Overworld → Void → End → Void → Nether → Void
if pos.y < mcl_vars.mg_overworld_min and pos.y > mcl_vars.mg_end_max then
void_deadly = pos.y < mcl_vars.mg_overworld_min - deadly_tolerance
elseif pos.y < mcl_vars.mg_end_min and pos.y > mcl_vars.mg_nether_max then
void_deadly = pos.y < mcl_vars.mg_end_min - deadly_tolerance
elseif pos.y < mcl_vars.mg_nether_min then
void_deadly = pos.y < mcl_vars.mg_nether_min - deadly_tolerance
end
end
return void, void_deadly
end
-- Here come 2 simple converter functions which are important for map generators and mob spawning
-- Takes an Y coordinate as input and returns:
-- 1) The corresponding Minecraft layer (can be nil if void)
-- 2) The corresponding Minecraft dimension ("overworld", "nether" or "end") or "void" if it is in the void
-- If the Y coordinate is not located in any dimension, it will return:
-- nil, "void"
function mcl_util.y_to_layer(y)
if y >= mcl_vars.mg_overworld_min then
return y - mcl_vars.mg_overworld_min, "overworld"
elseif y >= mcl_vars.mg_nether_min and y <= mcl_vars.mg_nether_max then
return y - mcl_vars.mg_nether_min, "nether"
elseif y >= mcl_vars.mg_end_min and y <= mcl_vars.mg_end_max then
return y - mcl_vars.mg_end_min, "end"
else
return nil, "void"
end
end
-- Takes a Minecraft layer and a “dimension” name
-- and returns the corresponding Y coordinate for
-- MineClone 2.
-- mc_dimension is one of "overworld", "nether", "end" (default: "overworld").
function mcl_util.layer_to_y(layer, mc_dimension)
if mc_dimension == "overworld" or mc_dimension == nil then
return layer + mcl_vars.mg_overworld_min
elseif mc_dimension == "nether" then
return layer + mcl_vars.mg_nether_min
elseif mc_dimension == "end" then
return layer + mcl_vars.mg_end_min
end
end
-- Returns a on_place function for plants
-- * condition: function(pos, node)
-- * condition: function(pos, node, itemstack)
-- * A function which is called by the on_place function to check if the node can be placed
-- * Must return true, if placement is allowed, false otherwise
-- * Must return true, if placement is allowed, false otherwise.
-- * If it returns a string, placement is allowed, but will place this itemstring as a node instead
-- * pos, node: Position and node table of plant node
-- * itemstack: Itemstack to place
function mcl_util.generate_on_place_plant_function(condition)
return function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" then
@ -423,9 +377,10 @@ function mcl_util.generate_on_place_plant_function(condition)
end
-- Check placement rules
if (condition(place_pos, node) == true) then
local result, param2 = condition(place_pos, node, itemstack)
if result == true then
local idef = itemstack:get_definition()
local new_itemstack, success = minetest.item_place_node(itemstack, placer, pointed_thing)
local new_itemstack, success = minetest.item_place_node(itemstack, placer, pointed_thing, param2)
if success then
if idef.sounds and idef.sounds.place then

View File

@ -0,0 +1 @@
mcl_init

View File

@ -0,0 +1 @@
Utility functions for worlds and the “dimensions”.

View File

@ -0,0 +1,140 @@
mcl_worlds = {}
-- For a given position, returns a 2-tuple:
-- 1st return value: true if pos is in void
-- 2nd return value: true if it is in the deadly part of the void
function mcl_worlds.is_in_void(pos)
local void =
not ((pos.y < mcl_vars.mg_overworld_max and pos.y > mcl_vars.mg_overworld_min) or
(pos.y < mcl_vars.mg_nether_max and pos.y > mcl_vars.mg_nether_min) or
(pos.y < mcl_vars.mg_end_max and pos.y > mcl_vars.mg_end_min))
local void_deadly = false
local deadly_tolerance = 64 -- the player must be this many nodes “deep” into the void to be damaged
if void then
-- Overworld → Void → End → Void → Nether → Void
if pos.y < mcl_vars.mg_overworld_min and pos.y > mcl_vars.mg_end_max then
void_deadly = pos.y < mcl_vars.mg_overworld_min - deadly_tolerance
elseif pos.y < mcl_vars.mg_end_min and pos.y > mcl_vars.mg_nether_max then
-- The void between End and Nether. Like usual, but here, the void
-- *above* the Nether also has a small tolerance area, so player
-- can fly above the Nether without getting hurt instantly.
void_deadly = (pos.y < mcl_vars.mg_end_min - deadly_tolerance) and (pos.y > mcl_vars.mg_nether_max + deadly_tolerance)
elseif pos.y < mcl_vars.mg_nether_min then
void_deadly = pos.y < mcl_vars.mg_nether_min - deadly_tolerance
end
end
return void, void_deadly
end
-- Takes an Y coordinate as input and returns:
-- 1) The corresponding Minecraft layer (can be nil if void)
-- 2) The corresponding Minecraft dimension ("overworld", "nether" or "end") or "void" if it is in the void
-- If the Y coordinate is not located in any dimension, it will return:
-- nil, "void"
function mcl_worlds.y_to_layer(y)
if y >= mcl_vars.mg_overworld_min then
return y - mcl_vars.mg_overworld_min, "overworld"
elseif y >= mcl_vars.mg_nether_min and y <= mcl_vars.mg_nether_max then
return y - mcl_vars.mg_nether_min, "nether"
elseif y >= mcl_vars.mg_end_min and y <= mcl_vars.mg_end_max then
return y - mcl_vars.mg_end_min, "end"
else
return nil, "void"
end
end
-- Takes a pos and returns the dimension it belongs to (same as above)
function mcl_worlds.pos_to_dimension(pos)
local _, dim = mcl_worlds.y_to_layer(pos.y)
return dim
end
-- Takes a Minecraft layer and a “dimension” name
-- and returns the corresponding Y coordinate for
-- MineClone 2.
-- mc_dimension is one of "overworld", "nether", "end" (default: "overworld").
function mcl_worlds.layer_to_y(layer, mc_dimension)
if mc_dimension == "overworld" or mc_dimension == nil then
return layer + mcl_vars.mg_overworld_min
elseif mc_dimension == "nether" then
return layer + mcl_vars.mg_nether_min
elseif mc_dimension == "end" then
return layer + mcl_vars.mg_end_min
end
end
-- Takes a position and returns true if this position can have weather
function mcl_worlds.has_weather(pos)
-- Weather in the Overworld and the high part of the void below
return pos.y <= mcl_vars.mg_overworld_max and pos.y >= mcl_vars.mg_overworld_min - 64
end
-- Takes a position (pos) and returns true if compasses are working here
function mcl_worlds.compass_works(pos)
-- It doesn't work in Nether and the End, but it works in the Overworld and in the high part of the void below
local _, dim = mcl_worlds.y_to_layer(pos.y)
if dim == "nether" or dim == "end" then
return false
elseif dim == "void" then
return pos.y <= mcl_vars.mg_overworld_max and pos.y >= mcl_vars.mg_overworld_min - 64
else
return true
end
end
-- Takes a position (pos) and returns true if clocks are working here
mcl_worlds.clock_works = mcl_worlds.compass_works
--------------- CALLBACKS ------------------
mcl_worlds.registered_on_dimension_change = {}
-- Register a callback function func(player, dimension).
-- It will be called whenever a player changes between dimensions.
-- The void counts as dimension.
-- * player: The player who changed the dimension
-- * dimension: The new dimension of the player ("overworld", "nether", "end", "void").
function mcl_worlds.register_on_dimension_change(func)
table.insert(mcl_worlds.registered_on_dimension_change, func)
end
-- Playername-indexed table containig the name of the last known dimension the
-- player was in.
local last_dimension = {}
-- Notifies this mod about a dimension change of a player.
-- * player: Player who changed the dimension
-- * dimension: New dimension ("overworld", "nether", "end", "void")
function mcl_worlds.dimension_change(player, dimension)
for i=1, #mcl_worlds.registered_on_dimension_change do
mcl_worlds.registered_on_dimension_change[i](player, dimension)
last_dimension[player:get_player_name()] = dimension
end
end
----------------------- INTERNAL STUFF ----------------------
-- Update the dimension callbacks every DIM_UPDATE seconds
local DIM_UPDATE = 1
local dimtimer = 0
minetest.register_on_joinplayer(function(player)
last_dimension[player:get_player_name()] = mcl_worlds.pos_to_dimension(player:get_pos())
end)
minetest.register_globalstep(function(dtime)
-- regular updates based on iterval
dimtimer = dimtimer + dtime;
if dimtimer >= DIM_UPDATE then
local players = minetest.get_connected_players()
for p=1, #players do
local dim = mcl_worlds.pos_to_dimension(players[p]:get_pos())
local name = players[p]:get_player_name()
if dim ~= last_dimension[name] then
mcl_worlds.dimension_change(players[p], dim)
end
end
dimtimer = 0
end
end)

2
mods/CORE/modpack.conf Normal file
View File

@ -0,0 +1,2 @@
name = CORE
description = Meta-modpack containing the core mods for MineClone 2 for core APIs, variables and definitions

View File

@ -4,7 +4,9 @@ minetest.register_globalstep(function(dtime)
timer = timer + dtime;
if timer >= 0.3 then
for _,player in pairs(minetest.get_connected_players()) do
local loc = vector.add(player:getpos(),{x=0,y=-1,z=0})
local pp = player:get_pos()
pp.y = math.ceil(pp.y)
local loc = vector.add(pp, {x=0,y=-1,z=0})
if loc ~= nil then
local nodeiamon = minetest.get_node(loc)

View File

@ -25,7 +25,7 @@ minetest.register_entity("drippingwater:drop_water", {
on_step = function(self, dtime)
local k = math.random(1,222)
local ownpos = self.object:getpos()
local ownpos = self.object:get_pos()
if k==1 then
self.object:setacceleration({x=0, y=-5, z=0})
@ -63,7 +63,7 @@ minetest.register_entity("drippingwater:drop_lava", {
on_step = function(self, dtime)
local k = math.random(1,222)
local ownpos = self.object:getpos()
local ownpos = self.object:get_pos()
if k==1 then
self.object:setacceleration({x=0, y=-5, z=0})

View File

@ -67,7 +67,7 @@ function boat.on_rightclick(self, clicker)
clicker:set_properties({visual_size = {x=1, y=1}})
mcl_player.player_attached[name] = false
mcl_player.player_set_animation(clicker, "stand" , 30)
local pos = clicker:getpos()
local pos = clicker:get_pos()
pos = {x = pos.x, y = pos.y + 0.2, z = pos.z}
clicker:setpos(pos)
elseif not self._driver then
@ -85,11 +85,12 @@ function boat.on_rightclick(self, clicker)
{x = 0, y = 3.75, z = -1}, {x = 0, y = 0, z = 0})
clicker:set_properties({ visual_size = driver_visual_size })
mcl_player.player_attached[name] = true
minetest.after(0.2, function(clicker)
if clicker:is_player() then
mcl_player.player_set_animation(clicker, "sit" , 30)
minetest.after(0.2, function(name)
local player = minetest.get_player_by_name(name)
if player then
mcl_player.player_set_animation(player, "sit" , 30)
end
end, clicker)
end, name)
clicker:set_look_horizontal(self.object:getyaw())
end
end
@ -130,7 +131,12 @@ function boat.on_punch(self, puncher)
self._removed = true
-- Drop boat as item on the ground after punching
if not minetest.settings:get_bool("creative_mode") then
minetest.add_item(self.object:getpos(), self._itemstring)
minetest.add_item(self.object:get_pos(), self._itemstring)
else
local inv = puncher:get_inventory()
if not inv:contains_item("main", self._itemstring) then
inv:add_item("main", self._itemstring)
end
end
self.object:remove()
end
@ -188,7 +194,7 @@ function boat.on_step(self, dtime)
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:getpos())
self.object:setpos(self.object:get_pos())
return
end
local s = get_sign(self._v)
@ -202,7 +208,7 @@ function boat.on_step(self, dtime)
self._v = 5 * get_sign(self._v)
end
local p = self.object:getpos()
local p = self.object:get_pos()
p.y = p.y - boat_y_offset
local new_velo
local new_acce = {x = 0, y = 0, z = 0}
@ -216,7 +222,7 @@ function boat.on_step(self, dtime)
end
new_velo = get_velocity(self._v, self.object:getyaw(),
self.object:getvelocity().y)
self.object:setpos(self.object:getpos())
self.object:setpos(self.object:get_pos())
else
p.y = p.y + 1
if is_water(p) then
@ -229,18 +235,18 @@ function boat.on_step(self, dtime)
new_acce = {x = 0, y = 5, z = 0}
end
new_velo = get_velocity(self._v, self.object:getyaw(), y)
self.object:setpos(self.object:getpos())
self.object:setpos(self.object:get_pos())
else
new_acce = {x = 0, y = 0, z = 0}
if math.abs(self.object:getvelocity().y) < 1 then
local pos = self.object:getpos()
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
new_velo = get_velocity(self._v, self.object:getyaw(),
self.object:getvelocity().y)
self.object:setpos(self.object:getpos())
self.object:setpos(self.object:get_pos())
end
end
end
@ -302,11 +308,22 @@ for b=1, #boat_ids do
local boat = minetest.add_entity(pointed_thing.under, "mcl_boats:boat")
boat:get_luaentity()._itemstring = itemstring
boat:set_properties({textures = { "mcl_boats_texture_"..images[b].."_boat.png" }})
boat:set_yaw(placer:get_look_horizontal())
if not minetest.settings:get_bool("creative_mode") then
itemstack:take_item()
end
return itemstack
end,
_on_dispense = function(stack, pos, droppos, dropnode, dropdir)
local below = {x=droppos.x, y=droppos.y-1, z=droppos.z}
local belownode = minetest.get_node(below)
-- Place boat as entity on or in water
if minetest.get_item_group(dropnode.name, "water") ~= 0 or (dropnode.name == "air" and minetest.get_item_group(belownode.name, "water") ~= 0) then
minetest.add_entity(droppos, "mcl_boats:boat")
else
minetest.add_item(droppos, stack)
end
end,
})
local c = craftstuffs[b]

View File

@ -0,0 +1 @@
Falling node entities, Minecraft-style

View File

@ -0,0 +1,256 @@
local dmes = minetest.get_modpath("mcl_death_messages") ~= nil
local get_falling_depth = function(self)
if not self._startpos then
-- Fallback
self._startpos = self.object:get_pos()
end
return self._startpos.y - vector.round(self.object:get_pos()).y
end
local deal_falling_damage = function(self, dtime)
if minetest.get_item_group(self.node.name, "falling_node_damage") == 0 then
return
end
-- Cause damage to any player it hits.
-- Algorithm based on MC anvils.
-- TODO: Support smashing other objects, too.
local pos = self.object:get_pos()
if not self._startpos then
-- Fallback
self._startpos = pos
end
local objs = minetest.get_objects_inside_radius(pos, 1)
for _,v in ipairs(objs) do
local hp = v:get_hp()
if v:is_player() and hp ~= 0 then
if not self._hit_players then
self._hit_players = {}
end
local name = v:get_player_name()
local hit = false
for _,v in ipairs(self._hit_players) do
if name == v then
hit = true
end
end
if not hit then
table.insert(self._hit_players, name)
local way = self._startpos.y - pos.y
local damage = (way - 1) * 2
damage = math.min(40, math.max(0, damage))
if damage >= 1 then
hp = hp - damage
if hp < 0 then
hp = 0
end
if v:is_player() then
-- TODO: Reduce damage if wearing a helmet
local msg
if minetest.get_item_group(self.node.name, "anvil") ~= 0 then
msg = "%s was smashed by a falling anvil."
else
msg = "%s was smashed by a falling block."
end
if dmes then
mcl_death_messages.player_damage(v, string.format(msg, v:get_player_name()))
end
end
v:set_hp(hp)
end
end
end
end
end
minetest.register_entity(":__builtin:falling_node", {
initial_properties = {
visual = "wielditem",
visual_size = {x = 0.667, y = 0.667},
textures = {},
physical = true,
is_visible = false,
collide_with_objects = false,
collisionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
},
node = {},
meta = {},
set_node = function(self, node, meta)
self.node = node
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
if def and node.param2 ~= 0 then
if (def.paramtype2 == "facedir" or def.paramtype2 == "colorfacedir") then
self.object:set_yaw(core.dir_to_yaw(core.facedir_to_dir(node.param2)))
elseif (def.paramtype2 == "wallmounted" or def.paramtype2 == "colorwallmounted") then
self.object:set_yaw(core.dir_to_yaw(core.wallmounted_to_dir(node.param2)))
end
end
end,
get_staticdata = function(self)
local meta = self.meta
-- Workaround: Save inventory seperately from metadata.
-- Because Minetest crashes when a node with inventory gets deactivated
-- (GitHub issue #7020).
-- FIXME: Remove the _inv workaround when it is no longer needed
local inv
if meta then
inv = meta.inv
meta.inventory = nil
end
local ds = {
node = self.node,
meta = self.meta,
_inv = inv,
_startpos = self._startpos,
_hit_players = self._hit_players,
}
return minetest.serialize(ds)
end,
on_activate = function(self, staticdata)
self.object:set_armor_groups({immortal = 1})
local ds = minetest.deserialize(staticdata)
if ds then
self._startpos = ds._startpos
self._hit_players = ds._hit_players
if ds.node then
local meta = ds.meta
meta.inventory = ds._inv
self:set_node(ds.node, meta)
else
self:set_node(ds)
end
elseif staticdata ~= "" then
self:set_node({name = staticdata})
end
if not self._startpos then
self._startpos = self.object:get_pos()
end
self._startpos = vector.round(self._startpos)
end,
on_step = function(self, dtime)
-- Set gravity
local acceleration = self.object:getacceleration()
if not vector.equals(acceleration, {x = 0, y = -10, z = 0}) then
self.object:setacceleration({x = 0, y = -10, z = 0})
end
-- Turn to actual node when colliding with ground, or continue to move
local pos = self.object:get_pos()
-- Portal check
local np = {x = pos.x, y = pos.y + 0.3, z = pos.z}
local n2 = minetest.get_node(np)
if n2.name == "mcl_portals:portal_end" then
-- TODO: Teleport falling node.
self.object:remove()
return
end
-- Position of bottom center point
local bcp = {x = pos.x, y = pos.y - 0.7, z = pos.z}
-- Avoid bugs caused by an unloaded node below
local bcn = minetest.get_node_or_nil(bcp)
local bcd = bcn and minetest.registered_nodes[bcn.name]
-- TODO: At this point, we did 2 get_nodes in 1 tick.
-- Figure out how to improve that (if it is a problem).
if bcn and (not bcd or bcd.walkable or
(minetest.get_item_group(self.node.name, "float") ~= 0 and
bcd.liquidtype ~= "none")) then
if bcd and bcd.leveled and
bcn.name == self.node.name then
local addlevel = self.node.level
if not addlevel or addlevel <= 0 then
addlevel = bcd.leveled
end
if minetest.add_node_level(bcp, addlevel) == 0 then
if minetest.registered_nodes[self.node.name]._mcl_after_falling then
minetest.registered_nodes[self.node.name]._mcl_after_falling(bcp, get_falling_depth(self))
end
deal_falling_damage(self, dtime)
self.object:remove()
return
end
elseif bcd and bcd.buildable_to and
(minetest.get_item_group(self.node.name, "float") == 0 or
bcd.liquidtype == "none") then
minetest.remove_node(bcp)
return
end
local nd = minetest.registered_nodes[n2.name]
if n2.name == "mcl_portals:portal_end" then
-- TODO: Teleport falling node.
elseif (nd and nd.buildable_to == true) or minetest.get_item_group(self.node.name, "crush_after_fall") ~= 0 then
-- Replace destination node if it's buildable to
minetest.remove_node(np)
-- Run script hook
for _, callback in pairs(minetest.registered_on_dignodes) do
callback(np, n2)
end
if minetest.registered_nodes[self.node.name] then
minetest.add_node(np, self.node)
if minetest.registered_nodes[self.node.name]._mcl_after_falling then
minetest.registered_nodes[self.node.name]._mcl_after_falling(np, get_falling_depth(self))
end
if self.meta then
local meta = minetest.get_meta(np)
meta:from_table(self.meta)
end
end
else
-- Drop the *falling node* as an item if the destination node is NOT buildable to
local drops = minetest.get_node_drops(self.node.name, "")
for _, dropped_item in pairs(drops) do
minetest.add_item(np, dropped_item)
end
end
deal_falling_damage(self, dtime)
self.object:remove()
minetest.check_for_falling(np)
return
end
local vel = self.object:getvelocity()
-- Fix position if entity does not move
if vector.equals(vel, {x = 0, y = 0, z = 0}) then
local npos = vector.round(self.object:get_pos())
local npos2 = table.copy(npos)
npos2.y = npos2.y - 2
local lownode = minetest.get_node(npos2)
-- Special check required for fences and walls, because of their overhigh collision box.
if minetest.get_item_group(lownode.name, "fence") == 1 or minetest.get_item_group(lownode.name, "wall") == 1 then
-- Instantly stop the node if it is above a fence/wall. This is needed
-- because the falling node collides early with a fence/wall node.
-- Hacky, because the falling node will teleport a short distance, instead
-- of smoothly fall on the fence post.
local npos3 = table.copy(npos)
npos3.y = npos3.y - 1
minetest.add_node(npos3, self.node)
if minetest.registered_nodes[self.node.name]._mcl_after_falling then
minetest.registered_nodes[self.node.name]._mcl_after_falling(npos3, get_falling_depth(self))
end
deal_falling_damage(self, dtime)
self.object:remove()
minetest.check_for_falling(npos3)
return
else
-- Normal position fix (expected case)
self.object:set_pos(npos)
end
end
deal_falling_damage(self, dtime)
end
})

View File

@ -0,0 +1 @@
name = mcl_falling_nodes

View File

@ -4,7 +4,7 @@ by PilzAdam
Introduction:
This mod adds Minecraft like drop/pick up of items to Minetest.
This mod has been forked from item_drop in the VoxBox subgame.
This mod has been forked from item_drop in the VoxBox game.
License:
Sourcecode: WTFPL (see below)

View File

@ -55,20 +55,20 @@ end
minetest.register_globalstep(function(dtime)
for _,player in ipairs(minetest.get_connected_players()) do
if player:get_hp() > 0 or not minetest.settings:get_bool("enable_damage") then
local pos = player:getpos()
local pos = player:get_pos()
local inv = player:get_inventory()
local checkpos = {x=pos.x,y=pos.y + item_drop_settings.player_collect_height,z=pos.z}
--magnet and collection
for _,object in ipairs(minetest.get_objects_inside_radius(checkpos, item_drop_settings.radius_magnet)) do
if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" and (object:get_luaentity()._insta_collect or (object:get_luaentity().age > item_drop_settings.age)) then
if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" and object:get_luaentity()._magnet_timer and (object:get_luaentity()._insta_collect or (object:get_luaentity().age > item_drop_settings.age)) then
object:get_luaentity()._magnet_timer = object:get_luaentity()._magnet_timer + dtime
local collected = false
if object:get_luaentity()._magnet_timer >= 0 and object:get_luaentity()._magnet_timer < item_drop_settings.magnet_time and inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then
-- Collection
if vector.distance(checkpos, object:getpos()) <= item_drop_settings.radius_collect then
if vector.distance(checkpos, object:get_pos()) <= item_drop_settings.radius_collect and not object:get_luaentity()._removed then
-- Ignore if itemstring is not set yet
if object:get_luaentity().itemstring ~= "" then
inv:add_item("main", ItemStack(object:get_luaentity().itemstring))
minetest.sound_play("item_drop_pickup", {
@ -77,7 +77,11 @@ minetest.register_globalstep(function(dtime)
gain = 1.0,
})
check_pickup_achievements(object, player)
object:get_luaentity().itemstring = ""
-- Destroy entity
-- This just prevents this section to be run again because object:remove() doesn't remove the item immediately.
object:get_luaentity()._removed = true
object:remove()
collected = true
end
@ -91,7 +95,7 @@ minetest.register_globalstep(function(dtime)
-- Move object to player
disable_physics(object, object:get_luaentity())
local opos = object:getpos()
local opos = object:get_pos()
local vec = vector.subtract(checkpos, opos)
vec = vector.add(opos, vector.divide(vec, 2))
object:moveto(vec)
@ -111,7 +115,8 @@ minetest.register_globalstep(function(dtime)
if object:get_luaentity().init ~= true then
object:get_luaentity().init = true
minetest.after(1, function(args)
local player = args[1]
local playername = args[1]
local player = minetest.get_player_by_name(playername)
local object = args[2]
local lua = object:get_luaentity()
if player == nil or not player:is_player() or object == nil or lua == nil or lua.itemstring == nil then
@ -119,7 +124,7 @@ minetest.register_globalstep(function(dtime)
end
if inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then
inv:add_item("main", ItemStack(object:get_luaentity().itemstring))
if object:get_luaentity().itemstring ~= "" then
if not object:get_luaentity()._removed then
minetest.sound_play("item_drop_pickup", {
pos = pos,
max_hear_distance = 16,
@ -127,12 +132,12 @@ minetest.register_globalstep(function(dtime)
})
end
check_pickup_achievements(object, player)
object:get_luaentity().itemstring = ""
object:get_luaentity()._removed = true
object:remove()
else
enable_physics(object, object:get_luaentity())
end
end, {player, object})
end, {player:get_player_name(), object})
end
end
end
@ -203,18 +208,25 @@ local check_can_drop = function(node_name, tool_capabilities)
end
function minetest.handle_node_drops(pos, drops, digger)
-- NOTE: This function override allows digger to be nil.
-- 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.
local doTileDrops = minetest.settings:get_bool("mcl_doTileDrops") or true
if 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
end
-- Check if node will yield its useful drop by the digger's tool
local dug_node = minetest.get_node(pos)
local tool = digger:get_wielded_item()
local toolcaps = tool:get_tool_capabilities()
local toolcaps
if digger ~= nil then
local tool = digger:get_wielded_item()
toolcaps = tool:get_tool_capabilities()
if not check_can_drop(dug_node.name, toolcaps) then
return
if not check_can_drop(dug_node.name, toolcaps) then
return
end
end
--[[ Special node drops when dug by shears by reading _mcl_shears_drop
@ -224,7 +236,7 @@ function minetest.handle_node_drops(pos, drops, digger)
* table: Drop every itemstring in this table when dub by shears
]]
local nodedef = minetest.registered_nodes[dug_node.name]
if toolcaps.groupcaps and toolcaps.groupcaps.shearsy_dig and nodedef._mcl_shears_drop then
if toolcaps ~= nil and toolcaps.groupcaps and toolcaps.groupcaps.shearsy_dig and nodedef._mcl_shears_drop then
if nodedef._mcl_shears_drop == true then
drops = { dug_node.name }
else
@ -242,7 +254,7 @@ function minetest.handle_node_drops(pos, drops, digger)
name = item:get_name()
end
for i=1,count do
local obj = minetest.add_item(pos, name)
local obj = core.add_item(pos, name)
if obj ~= nil then
local x = math.random(1, 5)
if math.random(1,2) == 1 then
@ -283,7 +295,7 @@ end
--modify builtin:item
local time_to_live = tonumber(core.setting_get("item_entity_ttl"))
local time_to_live = tonumber(minetest.settings:get("item_entity_ttl"))
if not time_to_live then
time_to_live = 300
end
@ -303,17 +315,27 @@ core.register_entity(":__builtin:item", {
infotext = "",
},
-- Itemstring of dropped item. The empty string is used when the item is not yet initialized yet.
-- The itemstring MUST be set immediately to a non-empty string after creating the entity.
-- The hand is NOT permitted as dropped item. ;-)
-- Item entities will be deleted if they still have an empty itemstring on their first on_step tick.
itemstring = '',
-- If true, item will fall
physical_state = true,
_flowing = false, -- item entity is currently flowing
-- States:
-- * "magnet": Attracted to a nearby player or item
-- * "flowing": Moving in a flowing liquid
-- * "normal": Affected by gravitiy
-- If item entity is currently flowing in water
_flowing = false,
-- Number of seconds this item entity has existed so far
age = 0,
set_item = function(self, itemstring)
self.itemstring = itemstring
if self.itemstring == "" then
-- item not yet known
return
end
local stack = ItemStack(itemstring)
local count = stack:get_count()
local max_count = stack:get_stack_max()
@ -376,6 +398,7 @@ core.register_entity(":__builtin:item", {
age = self.age,
_insta_collect = self._insta_collect,
_flowing = self._flowing,
_removed = self._removed,
})
end,
@ -394,10 +417,16 @@ core.register_entity(":__builtin:item", {
-- If true, can collect item without delay
self._insta_collect = data._insta_collect
self._flowing = data._flowing
self._removed = data._removed
end
else
self.itemstring = staticdata
end
if self._removed then
self._removed = true
self.object:remove()
return
end
if self._insta_collect == nil then
-- Intentionally default, since delayed collection is rare
self._insta_collect = true
@ -420,67 +449,66 @@ core.register_entity(":__builtin:item", {
self:set_item(self.itemstring)
end,
try_merge_with = function(self, own_stack, object, obj)
local stack = ItemStack(obj.itemstring)
if own_stack:get_name() == stack:get_name() and stack:get_free_space() > 0 then
local overflow = false
local count = stack:get_count() + own_stack:get_count()
local max_count = stack:get_stack_max()
if count > max_count then
overflow = true
count = count - max_count
else
self.itemstring = ''
end
local pos = object:getpos()
pos.y = pos.y + (count - stack:get_count()) / max_count * 0.15
object:moveto(pos, false)
local s, c
local max_count = stack:get_stack_max()
local name = stack:get_name()
if not overflow then
obj.itemstring = name .. " " .. count
s = 0.2 + 0.1 * (count / max_count)
c = s
object:set_properties({
visual_size = {x = s, y = s},
collisionbox = {-c, -c, -c, c, c, c}
})
self.object:remove()
-- merging succeeded
return true
else
s = 0.4
c = 0.3
object:set_properties({
visual_size = {x = s, y = s},
collisionbox = {-c, -c, -c, c, c, c}
})
obj.itemstring = name .. " " .. max_count
s = 0.2 + 0.1 * (count / max_count)
c = s
self.object:set_properties({
visual_size = {x = s, y = s},
collisionbox = {-c, -c, -c, c, c, c}
})
self.itemstring = name .. " " .. count
end
try_merge_with = function(self, own_stack, object, entity)
if self.age == entity.age or entity._removed then
-- Can not merge with itself and remove entity
return false
end
-- merging didn't succeed
return false
local stack = ItemStack(entity.itemstring)
local name = stack:get_name()
if own_stack:get_name() ~= name or
own_stack:get_meta() ~= stack:get_meta() or
own_stack:get_wear() ~= stack:get_wear() or
own_stack:get_free_space() == 0 then
-- Can not merge different or full stack
return false
end
local count = own_stack:get_count()
local total_count = stack:get_count() + count
local max_count = stack:get_stack_max()
if total_count > max_count then
return false
end
-- Merge the remote stack into this one
local pos = object:get_pos()
pos.y = pos.y + ((total_count - count) / max_count) * 0.15
self.object:move_to(pos)
self.age = 0 -- Handle as new entity
own_stack:set_count(total_count)
self:set_item(own_stack:to_string())
entity._removed = true
object:remove()
return true
end,
on_step = function(self, dtime)
if self._removed then
return
end
self.age = self.age + dtime
if self._collector_timer ~= nil then
self._collector_timer = self._collector_timer + dtime
end
if time_to_live > 0 and self.age > time_to_live then
self.itemstring = ''
self._removed = true
self.object:remove()
return
end
local p = self.object:getpos()
-- Delete corrupted item entities. The itemstring MUST be non-empty on its first step,
-- otherwise there might have some data corruption.
if self.itemstring == "" then
minetest.log("warning", "Item entity with empty itemstring found at "..minetest.pos_to_string(self.object:get_pos()).. "! Deleting it now.")
self._removed = true
self.object:remove()
end
local p = self.object:get_pos()
local node = core.get_node_or_nil(p)
local in_unloaded = (node == nil)
@ -496,14 +524,17 @@ core.register_entity(":__builtin:item", {
return
end
-- Destroy item in lava or special nodes
-- Destroy item in lava, fire or special nodes
local nn = node.name
local def = minetest.registered_nodes[nn]
if (def and def.groups and (def.groups.lava or def.groups.destroys_items == 1)) then
-- Special effect for lava
if def.groups.lava then
minetest.sound_play("builtin_item_lava", {pos = self.object:getpos(), gain = 0.5})
local lg = minetest.get_item_group(nn, "lava")
local fg = minetest.get_item_group(nn, "fire")
local dg = minetest.get_item_group(nn, "destroys_items")
if (def and (lg ~= 0 or fg ~= 0 or dg == 1)) then
if dg ~= 2 then
minetest.sound_play("builtin_item_lava", {pos = self.object:get_pos(), gain = 0.5})
end
self._removed = true
self.object:remove()
return
end

View File

@ -13,6 +13,10 @@ License of source code:
-----------------------
MIT License
Copyright (C) 2012-2016 PilzAdam
Copyright (C) 2014-2016 SmallJoker
Copyright (C) 2012-2016 Various Minetest developers and contributors
Authors/licenses of media files:
-----------------------

View File

@ -2,5 +2,10 @@ mcl_core
mcl_sounds
mcl_player
mcl_achievements
mesecons?
mcl_chests
mcl_furnaces
mesecons_commandblock
mcl_hoppers
mcl_tnt
mesecons
doc_identifier?

View File

@ -138,13 +138,3 @@ function mcl_minecarts:get_rail_direction(pos_, dir, ctrl, old_switch, railtype)
return {x=0, y=0, z=0}
end
function mcl_minecarts:boost_rail(pos, amount)
minetest.get_meta(pos):set_string("cart_acceleration", tostring(amount))
for _,obj_ in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do
if not obj_:is_player() and
obj_:get_luaentity() and
obj_:get_luaentity().name == "mcl_minecarts:minecart" then
obj_:get_luaentity():on_punch()
end
end
end

View File

@ -1,324 +1,628 @@
mcl_minecarts = {}
mcl_minecarts.modpath = minetest.get_modpath("mcl_minecarts")
mcl_minecarts.speed_max = 10
local vector_floor = function(v)
return {
x = math.floor(v.x),
y = math.floor(v.y),
z = math.floor(v.z)
}
end
mcl_minecarts.check_float_time = 15
dofile(mcl_minecarts.modpath.."/functions.lua")
dofile(mcl_minecarts.modpath.."/rails.lua")
mcl_minecarts.cart = {
physical = false,
collisionbox = {-10/16., -0.5, -10/16, 10/16, 0.25, 10/16},
visual = "mesh",
mesh = "mcl_minecarts_minecart.b3d",
visual_size = {x=1, y=1},
textures = {"mcl_minecarts_minecart.png"},
-- Table for item-to-entity mapping. Keys: itemstring, Values: Corresponding entity ID
local entity_mapping = {}
_driver = nil,
_punched = false, -- used to re-send _velocity and position
_velocity = {x=0, y=0, z=0}, -- only used on punch
_start_pos = nil, -- Used to calculate distance for “On A Rail” achievement
_old_dir = {x=0, y=0, z=0},
_old_pos = nil,
_old_switch = 0,
_railtype = nil,
}
local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
local cart = {
physical = false,
collisionbox = {-10/16., -0.5, -10/16, 10/16, 0.25, 10/16},
visual = "mesh",
mesh = mesh,
visual_size = {x=1, y=1},
textures = textures,
function mcl_minecarts.cart:on_rightclick(clicker)
if not clicker or not clicker:is_player() then
return
end
local player_name = clicker:get_player_name()
if self._driver and player_name == self._driver then
self._driver = nil
self._start_pos = nil
clicker:set_detach()
elseif not self._driver then
self._driver = player_name
self._start_pos = self.object:getpos()
mcl_player.player_attached[player_name] = true
clicker:set_attach(self.object, "", {x=0, y=3, z=0}, {x=0, y=0, z=0})
end
end
on_rightclick = on_rightclick,
function mcl_minecarts.cart:on_activate(staticdata, dtime_s)
self.object:set_armor_groups({immortal=1})
end
_driver = nil, -- player who sits in and controls the minecart (only for minecart!)
_punched = false, -- used to re-send _velocity and position
_velocity = {x=0, y=0, z=0}, -- only used on punch
_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
_old_dir = {x=0, y=0, z=0},
_old_pos = nil,
_old_vel = {x=0, y=0, z=0},
_old_switch = 0,
_railtype = nil,
}
function mcl_minecarts.cart:on_punch(puncher, time_from_last_punch, tool_capabilities, direction)
local pos = self.object:getpos()
if not self._railtype then
local node = minetest.get_node(vector_floor(pos)).name
self._railtype = minetest.get_item_group(node, "connect_to_raillike")
end
if not puncher or not puncher:is_player() then
local cart_dir = mcl_minecarts:get_rail_direction(pos, {x=1, y=0, z=0}, nil, nil, self._railtype)
if vector.equals(cart_dir, {x=0, y=0, z=0}) then
return
function cart:on_activate(staticdata, dtime_s)
local data = minetest.deserialize(staticdata)
if type(data) == "table" then
self._railtype = data._railtype
end
self._velocity = vector.multiply(cart_dir, 3)
self._old_pos = nil
self._punched = true
return
self.object:set_armor_groups({immortal=1})
end
if puncher:get_player_control().sneak then
if self._driver then
if self._old_pos then
self.object:setpos(self._old_pos)
function cart:on_punch(puncher, time_from_last_punch, tool_capabilities, direction)
local pos = self.object:get_pos()
if not self._railtype then
local node = minetest.get_node(vector.floor(pos)).name
self._railtype = minetest.get_item_group(node, "connect_to_raillike")
end
if not puncher or not puncher:is_player() then
local cart_dir = mcl_minecarts:get_rail_direction(pos, {x=1, y=0, z=0}, nil, nil, self._railtype)
if vector.equals(cart_dir, {x=0, y=0, z=0}) then
return
end
mcl_player.player_attached[self._driver] = nil
local player = minetest.get_player_by_name(self._driver)
if player then
player:set_detach()
end
end
if not minetest.settings:get_bool("creative_mode") then
minetest.add_item(self.object:getpos(), "mcl_minecarts:minecart")
end
self.object:remove()
return
end
local vel = self.object:getvelocity()
if puncher:get_player_name() == self._driver then
if math.abs(vel.x + vel.z) > 7 then
self._velocity = vector.multiply(cart_dir, 3)
self._old_pos = nil
self._punched = true
return
end
end
local punch_dir = mcl_minecarts:velocity_to_dir(puncher:get_look_dir())
punch_dir.y = 0
local cart_dir = mcl_minecarts:get_rail_direction(pos, punch_dir, nil, nil, self._railtype)
if vector.equals(cart_dir, {x=0, y=0, z=0}) then
return
end
time_from_last_punch = math.min(time_from_last_punch, tool_capabilities.full_punch_interval)
local f = 3 * (time_from_last_punch / tool_capabilities.full_punch_interval)
self._velocity = vector.multiply(cart_dir, f)
self._old_pos = nil
self._punched = true
end
function mcl_minecarts.cart:on_step(dtime)
local vel = self.object:getvelocity()
local update = {}
if self._punched then
vel = vector.add(vel, self._velocity)
self.object:setvelocity(vel)
self._old_dir.y = 0
elseif vector.equals(vel, {x=0, y=0, z=0}) then
return
end
local dir, last_switch = nil, nil
local pos = self.object:getpos()
if self._old_pos and not self._punched then
local flo_pos = vector_floor(pos)
local flo_old = vector_floor(self._old_pos)
if vector.equals(flo_pos, flo_old) then
return
end
end
local ctrl, player = nil, nil
if self._driver then
player = minetest.get_player_by_name(self._driver)
if player then
ctrl = player:get_player_control()
end
end
if self._old_pos then
local diff = vector.subtract(self._old_pos, pos)
for _,v in ipairs({"x","y","z"}) do
if math.abs(diff[v]) > 1.1 then
local expected_pos = vector.add(self._old_pos, self._old_dir)
dir, last_switch = mcl_minecarts:get_rail_direction(pos, self._old_dir, ctrl, self._old_switch, self._railtype)
if vector.equals(dir, {x=0, y=0, z=0}) then
dir = false
pos = vector.new(expected_pos)
update.pos = true
if puncher:get_player_control().sneak then
if self._driver then
if self._old_pos then
self.object:setpos(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
break
end
end
end
if vel.y == 0 then
for _,v in ipairs({"x", "z"}) do
if vel[v] ~= 0 and math.abs(vel[v]) < 0.9 then
vel[v] = 0
update.vel = true
-- Disable detector rail
local rou_pos = vector.round(pos)
local node = minetest.get_node(rou_pos)
if node.name == "mcl_minecarts:detector_rail_on" then
local newnode = {name="mcl_minecarts:detector_rail", param2 = node.param2}
minetest.swap_node(rou_pos, newnode)
mesecon.receptor_off(rou_pos)
end
end
end
local cart_dir = mcl_minecarts:velocity_to_dir(vel)
local max_vel = mcl_minecarts.speed_max
if not dir then
dir, last_switch = mcl_minecarts:get_rail_direction(pos, cart_dir, ctrl, self._old_switch, self._railtype)
end
local new_acc = {x=0, y=0, z=0}
if vector.equals(dir, {x=0, y=0, z=0}) then
vel = {x=0, y=0, z=0}
update.vel = true
else
-- If the direction changed
if dir.x ~= 0 and self._old_dir.z ~= 0 then
vel.x = dir.x * math.abs(vel.z)
vel.z = 0
pos.z = math.floor(pos.z + 0.5)
update.pos = true
end
if dir.z ~= 0 and self._old_dir.x ~= 0 then
vel.z = dir.z * math.abs(vel.x)
vel.x = 0
pos.x = math.floor(pos.x + 0.5)
update.pos = true
end
-- Up, down?
if dir.y ~= self._old_dir.y then
vel.y = dir.y * math.abs(vel.x + vel.z)
pos = vector.round(pos)
update.pos = true
end
-- Slow down or speed up..
local acc = dir.y * -1.8
local speed_mod = tonumber(minetest.get_meta(pos):get_string("cart_acceleration"))
if speed_mod and speed_mod ~= 0 then
if speed_mod > 0 then
for _,v in ipairs({"x","y","z"}) do
if math.abs(vel[v]) >= max_vel then
speed_mod = 0
break
-- Drop items and remove cart entity
if not minetest.settings:get_bool("creative_mode") then
for d=1, #drop do
minetest.add_item(self.object:get_pos(), drop[d])
end
elseif puncher and puncher:is_player() then
local inv = puncher:get_inventory()
for d=1, #drop do
if not inv:contains_item("main", drop[d]) then
inv:add_item("main", drop[d])
end
end
end
acc = acc + (speed_mod * 8)
else
acc = acc - 0.4
end
new_acc = vector.multiply(dir, acc)
end
self.object:setacceleration(new_acc)
self._old_pos = vector.new(pos)
self._old_dir = vector.new(dir)
self._old_switch = last_switch
-- Limits
for _,v in ipairs({"x","y","z"}) do
if math.abs(vel[v]) > max_vel then
vel[v] = mcl_minecarts:get_sign(vel[v]) * max_vel
update.vel = true
end
end
-- Give achievement when player reached a distance of 1000 nodes from the start position
if self._driver and (vector.distance(self._start_pos, pos) >= 1000) then
awards.unlock(self._driver, "mcl:onARail")
end
if update.pos or self._punched then
local yaw = 0
if dir.x < 0 then
yaw = 0.5
elseif dir.x > 0 then
yaw = 1.5
elseif dir.z < 0 then
yaw = 1
end
self.object:setyaw(yaw * math.pi)
end
if self._punched then
self._punched = false
end
if not (update.vel or update.pos) then
return
end
local anim = {x=0, y=0}
if dir.y == -1 then
anim = {x=1, y=1}
elseif dir.y == 1 then
anim = {x=2, y=2}
end
self.object:set_animation(anim, 1, 0)
self.object:setvelocity(vel)
if update.pos then
self.object:setpos(pos)
end
update = nil
end
minetest.register_entity("mcl_minecarts:minecart", mcl_minecarts.cart)
minetest.register_craftitem("mcl_minecarts:minecart", {
description = "Minecart",
_doc_items_longdesc = "Minecarts can be used for a quick transportion on rails." .. "\n" ..
"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.",
_doc_items_usagehelp = "You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving." .. "\n" ..
"To obtain the minecart, punch it while holding down the sneak key.",
inventory_image = "mcl_minecarts_minecart_normal.png",
wield_image = "mcl_minecarts_minecart_normal.png",
stack_max = 1,
on_place = function(itemstack, placer, pointed_thing)
if not pointed_thing.type == "node" then
self.object:remove()
return
end
-- Call on_rightclick if the pointed node defines it
local node = minetest.get_node(pointed_thing.under)
if placer and not placer:get_player_control().sneak then
if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then
return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) or itemstack
local vel = self.object:getvelocity()
if puncher:get_player_name() == self._driver then
if math.abs(vel.x + vel.z) > 7 then
return
end
end
local railpos
if mcl_minecarts:is_rail(pointed_thing.under) then
railpos = pointed_thing.under
elseif mcl_minecarts:is_rail(pointed_thing.above) then
railpos = pointed_thing.under
else
local punch_dir = mcl_minecarts:velocity_to_dir(puncher:get_look_dir())
punch_dir.y = 0
local cart_dir = mcl_minecarts:get_rail_direction(pos, punch_dir, nil, nil, self._railtype)
if vector.equals(cart_dir, {x=0, y=0, z=0}) then
return
end
local cart = minetest.add_entity(railpos, "mcl_minecarts:minecart")
local railtype = minetest.get_item_group(node.name, "connect_to_raillike")
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))
if not minetest.settings:get_bool("creative_mode") then
itemstack:take_item()
time_from_last_punch = math.min(time_from_last_punch, tool_capabilities.full_punch_interval)
local f = 3 * (time_from_last_punch / tool_capabilities.full_punch_interval)
self._velocity = vector.multiply(cart_dir, f)
self._old_pos = nil
self._punched = true
end
function cart:on_step(dtime)
local vel = self.object:getvelocity()
local update = {}
if self._last_float_check == nil then
self._last_float_check = 0
else
self._last_float_check = self._last_float_check + dtime
end
return itemstack
end,
groups = { minecart = 1, transport = 1},
})
local pos, rou_pos, node
-- Drop minecart if it isn't on a rail anymore
if self._last_float_check >= mcl_minecarts.check_float_time then
pos = self.object:get_pos()
rou_pos = vector.round(pos)
node = minetest.get_node(rou_pos)
local g = minetest.get_item_group(node.name, "connect_to_raillike")
if g ~= self._railtype and self._railtype ~= nil then
-- Detach driver
if self._driver then
if self._old_pos then
self.object:setpos(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
if minetest.get_modpath("doc_identifier") ~= nil then
doc.sub.identifier.register_object("mcl_minecarts:minecart", "craftitems", "mcl_minecarts:minecart")
-- Drop items and remove cart entity
if not minetest.settings:get_bool("creative_mode") then
for d=1, #drop do
minetest.add_item(self.object:get_pos(), drop[d])
end
end
self.object:remove()
return
end
self._last_float_check = 0
end
if self._punched then
vel = vector.add(vel, self._velocity)
self.object:setvelocity(vel)
self._old_dir.y = 0
elseif vector.equals(vel, {x=0, y=0, z=0}) then
return
end
local dir, last_switch = nil, nil
if not pos then
pos = self.object:get_pos()
end
if self._old_pos and not self._punched then
local flo_pos = vector.floor(pos)
local flo_old = vector.floor(self._old_pos)
if vector.equals(flo_pos, flo_old) then
return
-- Prevent querying the same node over and over again
end
if not rou_pos then
rou_pos = vector.round(pos)
end
rou_old = vector.round(self._old_pos)
if not node then
node = minetest.get_node(rou_pos)
end
local node_old = minetest.get_node(rou_old)
-- Update detector rails
if node.name == "mcl_minecarts:detector_rail" then
local newnode = {name="mcl_minecarts:detector_rail_on", param2 = node.param2}
minetest.swap_node(rou_pos, newnode)
mesecon.receptor_on(rou_pos)
end
if node_old.name == "mcl_minecarts:detector_rail_on" then
local newnode = {name="mcl_minecarts:detector_rail", param2 = node_old.param2}
minetest.swap_node(rou_old, newnode)
mesecon.receptor_off(rou_old)
end
end
local ctrl, player = nil, nil
if self._driver then
player = minetest.get_player_by_name(self._driver)
if player then
ctrl = player:get_player_control()
end
end
-- Stop cart if velocity vector flips
if self._old_vel and self._old_vel.y == 0 and
(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_pos = pos
self.object:setvelocity(vector.new())
self.object:setacceleration(vector.new())
return
end
self._old_vel = vector.new(vel)
if self._old_pos then
local diff = vector.subtract(self._old_pos, pos)
for _,v in ipairs({"x","y","z"}) do
if math.abs(diff[v]) > 1.1 then
local expected_pos = vector.add(self._old_pos, self._old_dir)
dir, last_switch = mcl_minecarts:get_rail_direction(pos, self._old_dir, ctrl, self._old_switch, self._railtype)
if vector.equals(dir, {x=0, y=0, z=0}) then
dir = false
pos = vector.new(expected_pos)
update.pos = true
end
break
end
end
end
if vel.y == 0 then
for _,v in ipairs({"x", "z"}) do
if vel[v] ~= 0 and math.abs(vel[v]) < 0.9 then
vel[v] = 0
update.vel = true
end
end
end
local cart_dir = mcl_minecarts:velocity_to_dir(vel)
local max_vel = mcl_minecarts.speed_max
if not dir then
dir, last_switch = mcl_minecarts:get_rail_direction(pos, cart_dir, ctrl, self._old_switch, self._railtype)
end
local new_acc = {x=0, y=0, z=0}
if vector.equals(dir, {x=0, y=0, z=0}) then
vel = {x=0, y=0, z=0}
update.vel = true
else
-- If the direction changed
if dir.x ~= 0 and self._old_dir.z ~= 0 then
vel.x = dir.x * math.abs(vel.z)
vel.z = 0
pos.z = math.floor(pos.z + 0.5)
update.pos = true
end
if dir.z ~= 0 and self._old_dir.x ~= 0 then
vel.z = dir.z * math.abs(vel.x)
vel.x = 0
pos.x = math.floor(pos.x + 0.5)
update.pos = true
end
-- Up, down?
if dir.y ~= self._old_dir.y then
vel.y = dir.y * math.abs(vel.x + vel.z)
pos = vector.round(pos)
update.pos = true
end
-- Slow down or speed up
local acc = dir.y * -1.8
local speed_mod = minetest.registered_nodes[minetest.get_node(pos).name]._rail_acceleration
if speed_mod and speed_mod ~= 0 then
acc = acc + speed_mod
else
acc = acc - 0.4
end
new_acc = vector.multiply(dir, acc)
end
self.object:setacceleration(new_acc)
self._old_pos = vector.new(pos)
self._old_dir = vector.new(dir)
self._old_switch = last_switch
-- Limits
for _,v in ipairs({"x","y","z"}) do
if math.abs(vel[v]) > max_vel then
vel[v] = mcl_minecarts:get_sign(vel[v]) * max_vel
new_acc[v] = 0
update.vel = true
end
end
-- Give achievement when player reached a distance of 1000 nodes from the start position
if self._driver and (vector.distance(self._start_pos, pos) >= 1000) then
awards.unlock(self._driver, "mcl:onARail")
end
if update.pos or self._punched then
local yaw = 0
if dir.x < 0 then
yaw = 0.5
elseif dir.x > 0 then
yaw = 1.5
elseif dir.z < 0 then
yaw = 1
end
self.object:setyaw(yaw * math.pi)
end
if self._punched then
self._punched = false
end
if not (update.vel or update.pos) then
return
end
local anim = {x=0, y=0}
if dir.y == -1 then
anim = {x=1, y=1}
elseif dir.y == 1 then
anim = {x=2, y=2}
end
self.object:set_animation(anim, 1, 0)
self.object:setvelocity(vel)
if update.pos then
self.object:setpos(pos)
end
update = nil
end
function cart:get_staticdata()
return minetest.serialize({_railtype = self._railtype})
end
minetest.register_entity(entity_id, cart)
end
-- Place a minecart at pointed_thing
mcl_minecarts.place_minecart = function(itemstack, pointed_thing)
if not pointed_thing.type == "node" then
return
end
local railpos, node
if mcl_minecarts:is_rail(pointed_thing.under) then
railpos = pointed_thing.under
node = minetest.get_node(pointed_thing.under)
elseif mcl_minecarts:is_rail(pointed_thing.above) then
railpos = pointed_thing.above
node = minetest.get_node(pointed_thing.above)
else
return
end
-- Activate detector rail
if node.name == "mcl_minecarts:detector_rail" then
local newnode = {name="mcl_minecarts:detector_rail_on", param2 = node.param2}
minetest.swap_node(railpos, newnode)
mesecon.receptor_on(railpos)
end
local entity_id = entity_mapping[itemstack:get_name()]
local cart = minetest.add_entity(railpos, entity_id)
local railtype = minetest.get_item_group(node.name, "connect_to_raillike")
local le = cart:get_luaentity()
if le ~= nil then
le._railtype = railtype
end
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))
if not minetest.settings:get_bool("creative_mode") then
itemstack:take_item()
end
return itemstack
end
local register_craftitem = function(itemstring, entity_id, description, longdesc, usagehelp, icon, creative)
entity_mapping[itemstring] = entity_id
local groups = { minecart = 1, transport = 1 }
if creative == false then
groups.not_in_creative_inventory = 1
end
local def = {
stack_max = 1,
on_place = function(itemstack, placer, pointed_thing)
if not pointed_thing.type == "node" then
return
end
-- Call on_rightclick if the pointed node defines it
local node = minetest.get_node(pointed_thing.under)
if placer and not placer:get_player_control().sneak then
if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then
return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) or itemstack
end
end
return mcl_minecarts.place_minecart(itemstack, pointed_thing)
end,
_on_dispense = function(stack, pos, droppos, dropnode, dropdir)
-- Place minecart as entity on rail. If there's no rail, just drop it.
local placed
if minetest.get_item_group(dropnode.name, "rail") ~= 0 then
-- FIXME: This places minecarts even if the spot is already occupied
local pointed_thing = { under = droppos, above = { x=droppos.x, y=droppos.y+1, z=droppos.z } }
placed = mcl_minecarts.place_minecart(stack, pointed_thing)
end
if placed == nil then
-- Drop item
minetest.add_item(droppos, stack)
end
end,
groups = groups,
}
def.description = description
def._doc_items_longdesc = longdesc
def._doc_items_usagehelp = usagehelp
def.inventory_image = icon
def.wield_image = icon
minetest.register_craftitem(itemstring, def)
end
--[[
Register a minecart
* itemstring: Itemstring of minecart item
* entity_id: ID of minecart entity
* description: Item name / description
* longdesc: Long help text
* usagehelp: Usage help text
* mesh: Minecart mesh
* textures: Minecart textures table
* icon: Item icon
* drop: Dropped items after destroying minecart
* on_rightclick: Called after rightclick
* on_activate_by_rail: Called when above activator rail
* 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)
register_entity(entity_id, mesh, textures, drop, on_rightclick)
register_craftitem(itemstring, entity_id, description, longdesc, usagehelp, icon, creative)
if minetest.get_modpath("doc_identifier") ~= nil then
doc.sub.identifier.register_object(entity_id, "craftitems", itemstring)
end
end
-- Minecart
register_minecart(
"mcl_minecarts:minecart",
"mcl_minecarts:minecart",
"Minecart",
"Minecarts can be used for a quick transportion on rails." .. "\n" ..
"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." .. "\n" ..
"To obtain the minecart, punch it while holding down the sneak key.",
"mcl_minecarts_minecart.b3d",
{"mcl_minecarts_minecart.png"},
"mcl_minecarts_minecart_normal.png",
{"mcl_minecarts:minecart"},
function(self, clicker)
local name = clicker:get_player_name()
if not clicker or not clicker:is_player() then
return
end
local player_name = clicker:get_player_name()
if self._driver and player_name == self._driver then
self._driver = nil
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
self._driver = player_name
self._start_pos = self.object:get_pos()
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})
mcl_player.player_attached[name] = true
minetest.after(0.2, function(name)
local player = minetest.get_player_by_name(name)
if player then
mcl_player.player_set_animation(player, "sit" , 30)
player:set_eye_offset({x=0, y=-5.5, z=0},{x=0, y=-4, z=0})
end
end, name)
end
end
)
-- Minecart with Chest
register_minecart(
"mcl_minecarts:chest_minecart",
"mcl_minecarts:chest_minecart",
"Minecart with Chest",
nil, nil,
"mcl_minecarts_minecart_chest.b3d",
{ "mcl_chests_normal.png", "mcl_minecarts_minecart.png" },
"mcl_minecarts_minecart_chest.png",
{"mcl_minecarts:minecart", "mcl_chests:chest"},
nil, nil, false)
-- Minecart with Furnace
register_minecart(
"mcl_minecarts:furnace_minecart",
"mcl_minecarts:furnace_minecart",
"Minecart with Furnace",
nil, nil,
"mcl_minecarts_minecart_block.b3d",
{
"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",
},
"mcl_minecarts_minecart_furnace.png",
{"mcl_minecarts:minecart", "mcl_furnaces:furnace"},
-- Feed furnace with coal
function(self, clicker)
if not clicker or not clicker:is_player() then
return
end
if not self._fueltime then
self._fueltime = 0
end
local held = clicker:get_wielded_item()
if minetest.get_item_group(held:get_name(), "coal") == 1 then
self._fueltime = self._fueltime + 180
if not minetest.settings:get_bool("creative_mode") then
held:take_item()
local index = clicker:get_wielded_index()
local inv = clicker:get_inventory()
inv:set_stack("main", index, held)
end
-- DEBUG
minetest.chat_send_player(clicker:get_player_name(), "Fuel: " .. tostring(self._fueltime))
end
end, nil, false
)
-- Minecart with Command Block
register_minecart(
"mcl_minecarts:command_block_minecart",
"mcl_minecarts:command_block_minecart",
"Minecart with Command Block",
nil, nil,
"mcl_minecarts_minecart_block.b3d",
{
"jeija_commandblock_off.png^[verticalframe:2:0",
"jeija_commandblock_off.png^[verticalframe:2:0",
"jeija_commandblock_off.png^[verticalframe:2:0",
"jeija_commandblock_off.png^[verticalframe:2:0",
"jeija_commandblock_off.png^[verticalframe:2:0",
"jeija_commandblock_off.png^[verticalframe:2:0",
"mcl_minecarts_minecart.png",
},
"mcl_minecarts_minecart_command_block.png",
{"mcl_minecarts:minecart"},
nil, nil, false
)
-- Minecart with Hopper
register_minecart(
"mcl_minecarts:hopper_minecart",
"mcl_minecarts:hopper_minecart",
"Minecart with Hopper",
nil, nil,
"mcl_minecarts_minecart_hopper.b3d",
{
"mcl_hoppers_hopper_inside.png",
"mcl_minecarts_minecart.png",
"mcl_hoppers_hopper_outside.png",
"mcl_hoppers_hopper_top.png",
},
"mcl_minecarts_minecart_hopper.png",
{"mcl_minecarts:minecart", "mcl_hoppers:hopper"},
nil, nil, false
)
-- Minecart with TNT
register_minecart(
"mcl_minecarts:tnt_minecart",
"mcl_minecarts:tnt_minecart",
"Minecart with TNT",
nil, nil,
"mcl_minecarts_minecart_block.b3d",
{
"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",
},
"mcl_minecarts_minecart_tnt.png",
{"mcl_minecarts:minecart", "mcl_tnt:tnt"},
nil, nil, false
)
minetest.register_craft({
output = "mcl_minecarts:minecart",
recipe = {
@ -326,3 +630,38 @@ minetest.register_craft({
{"mcl_core:iron_ingot", "mcl_core:iron_ingot", "mcl_core:iron_ingot"},
},
})
-- TODO: Re-enable crafting of special minecarts when they have been implemented
if false then
minetest.register_craft({
output = "mcl_minecarts:hopper_minecart",
recipe = {
{"mcl_hoppers:hopper"},
{"mcl_minecarts:minecart"},
},
})
minetest.register_craft({
output = "mcl_minecarts:chest_minecart",
recipe = {
{"mcl_chests:chest"},
{"mcl_minecarts:minecart"},
},
})
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

View File

@ -1,29 +1,192 @@
-- Template rail function
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}
if creative == false then
groups.not_in_creative_inventory = 1
end
local ndef = {
drawtype = "raillike",
tiles = tiles,
is_ground_content = false,
inventory_image = tiles[1],
wield_image = tiles[1],
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed",
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
stack_max = 64,
groups = groups,
sounds = mcl_sounds.node_sound_metal_defaults(),
_mcl_blast_resistance = 3.5,
_mcl_hardness = 0.7,
after_destruct = function(pos)
-- Scan for minecarts in this pos and force them to execute their "floating" check.
-- Normally, this will make them drop.
local objs = minetest.get_objects_inside_radius(pos, 1)
for o=1, #objs do
local le = objs[o]:get_luaentity()
if le then
-- All entities in this mod are minecarts, so this works
if string.sub(le.name, 1, 14) == "mcl_minecarts:" then
le._last_float_check = mcl_minecarts.check_float_time
end
end
end
end,
}
if def_extras then
for k,v in pairs(def_extras) do
ndef[k] = v
end
end
minetest.register_node(itemstring, ndef)
end
-- Redstone rules
local rail_rules_long =
{{x=-1, y= 0, z= 0, spread=true},
{x= 1, y= 0, z= 0, spread=true},
{x= 0, y=-1, z= 0, spread=true},
{x= 0, y= 1, z= 0, spread=true},
{x= 0, y= 0, z=-1, spread=true},
{x= 0, y= 0, z= 1, spread=true},
{x= 1, y= 1, z= 0},
{x= 1, y=-1, z= 0},
{x=-1, y= 1, z= 0},
{x=-1, y=-1, z= 0},
{x= 0, y= 1, z= 1},
{x= 0, y=-1, z= 1},
{x= 0, y= 1, z=-1},
{x= 0, y=-1, z=-1}}
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."
-- Normal rail
minetest.register_node("mcl_minecarts:rail", {
description = "Rail",
_doc_items_longdesc = "Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.",
_doc_items_usagehelp = railuse,
drawtype = "raillike",
tiles = {"default_rail.png", "default_rail_curved.png", "default_rail_t_junction.png", "default_rail_crossing.png"},
is_ground_content = false,
inventory_image = "default_rail.png",
wield_image = "default_rail.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed",
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
stack_max = 64,
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},
sounds = mcl_sounds.node_sound_metal_defaults(),
_mcl_blast_resistance = 3.5,
_mcl_hardness = 0.7,
})
register_rail("mcl_minecarts:rail",
{"default_rail.png", "default_rail_curved.png", "default_rail_t_junction.png", "default_rail_crossing.png"},
{
description = "Rail",
_doc_items_longdesc = "Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.",
_doc_items_usagehelp = railuse,
}
)
-- Powered rail (off = brake mode)
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"},
{
description = "Powered Rail",
_doc_items_longdesc = "Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.",
_doc_items_usagehelp = railuse .. "\n" .. "Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.",
_rail_acceleration = -3,
mesecons = {
conductor = {
state = mesecon.state.off,
offstate = "mcl_minecarts:golden_rail",
onstate = "mcl_minecarts:golden_rail_on",
rules = rail_rules_long,
},
},
}
)
-- Powered rail (on = acceleration mode)
register_rail("mcl_minecarts:golden_rail_on",
{"mcl_minecarts_rail_golden_powered.png", "mcl_minecarts_rail_golden_curved_powered.png", "mcl_minecarts_rail_golden_t_junction_powered.png", "mcl_minecarts_rail_golden_crossing_powered.png"},
{
_doc_items_create_entry = false,
_rail_acceleration = 4,
mesecons = {
conductor = {
state = mesecon.state.on,
offstate = "mcl_minecarts:golden_rail",
onstate = "mcl_minecarts:golden_rail_on",
rules = rail_rules_long,
},
},
drop = "mcl_minecarts:golden_rail",
},
false
)
-- Activator rail (off)
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"},
{
description = "Activator Rail",
_doc_items_longdesc = "Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.",
_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.",
mesecons = {
conductor = {
state = mesecon.state.off,
offstate = "mcl_minecarts:activator_rail",
onstate = "mcl_minecarts:activator_rail_on",
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)
register_rail("mcl_minecarts:activator_rail_on",
{"mcl_minecarts_rail_activator_powered.png", "mcl_minecarts_rail_activator_curved_powered.png", "mcl_minecarts_rail_activator_t_junction_powered.png", "mcl_minecarts_rail_activator_crossing_powered.png"},
{
_doc_items_create_entry = false,
mesecons = {
conductor = {
state = mesecon.state.on,
offstate = "mcl_minecarts:activator_rail",
onstate = "mcl_minecarts:activator_rail_on",
rules = rail_rules_long,
},
},
drop = "mcl_minecarts:activator_rail",
},
false
)
-- Detector rail (off)
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"},
{
description = "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.",
_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.",
mesecons = {
receptor = {
state = mesecon.state.off,
rules = rail_rules_short,
},
},
}
)
-- Detector rail (on)
register_rail("mcl_minecarts:detector_rail_on",
{"mcl_minecarts_rail_detector_powered.png", "mcl_minecarts_rail_detector_curved_powered.png", "mcl_minecarts_rail_detector_t_junction_powered.png", "mcl_minecarts_rail_detector_crossing_powered.png"},
{
_doc_items_create_entry = false,
mesecons = {
receptor = {
state = mesecon.state.on,
rules = rail_rules_short,
},
},
drop = "mcl_minecarts:detector_rail",
},
false
)
-- Crafting
minetest.register_craft({
output = 'mcl_minecarts:rail 16',
recipe = {
@ -33,46 +196,6 @@ minetest.register_craft({
}
})
-- Rail to speed up
minetest.register_node("mcl_minecarts:golden_rail", {
description = "Powered Rail",
_doc_items_longdesc = "Rails can be used to build transport tracks for minecarts. Powered rails will accelerate moving minecarts, up to a maximum speed.",
_doc_items_usagehelp = railuse,
drawtype = "raillike",
tiles = {"carts_rail_pwr.png", "carts_rail_curved_pwr.png", "carts_rail_t_junction_pwr.png", "carts_rail_crossing_pwr.png"},
inventory_image = "carts_rail_pwr.png",
wield_image = "carts_rail_pwr.png",
paramtype = "light",
is_ground_content = false,
walkable = false,
selection_box = {
type = "fixed",
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
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},
after_place_node = function(pos, placer, itemstack)
if not mesecon then
minetest.get_meta(pos):set_string("cart_acceleration", "0.5")
end
end,
sounds = mcl_sounds.node_sound_metal_defaults(),
mesecons = {
effector = {
action_on = function(pos, node)
mcl_minecarts:boost_rail(pos, 0.5)
end,
action_off = function(pos, node)
minetest.get_meta(pos):set_string("cart_acceleration", "0")
end,
},
},
_mcl_blast_resistance = 3.5,
_mcl_hardness = 0.7,
})
minetest.register_craft({
output = "mcl_minecarts:golden_rail 6",
recipe = {
@ -82,3 +205,31 @@ minetest.register_craft({
}
})
-- Activator rail crafting is disabled until it becomes useful.
-- TODO: Enable crafting as needed.
if false then
minetest.register_craft({
output = "mcl_minecarts:activator_rail 6",
recipe = {
{"mcl_core:iron_ingot", "mcl_core:stick", "mcl_core:iron_ingot"},
{"mcl_core:iron_ingot", "mesecons_torch:mesecon_torch_on", "mcl_core:iron_ingot"},
{"mcl_core:iron_ingot", "mcl_core:stick", "mcl_core:iron_ingot"},
}
})
end
minetest.register_craft({
output = "mcl_minecarts:detector_rail 6",
recipe = {
{"mcl_core:iron_ingot", "", "mcl_core:iron_ingot"},
{"mcl_core:iron_ingot", "mesecons_pressureplates:pressure_plate_stone_off", "mcl_core:iron_ingot"},
{"mcl_core:iron_ingot", "mesecons:redstone", "mcl_core:iron_ingot"},
}
})
-- Aliases
if minetest.get_modpath("doc") then
doc.add_entry_alias("nodes", "mcl_minecarts:golden_rail", "nodes", "mcl_minecarts:golden_rail_on")
end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 562 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 459 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 542 B

After

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 576 B

After

Width:  |  Height:  |  Size: 238 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Some files were not shown because too many files have changed in this diff Show More