Add files via upload

master
AiTechEye 2018-12-01 23:15:05 +01:00 committed by GitHub
parent 9e7e9b66df
commit ab38d391df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 239 additions and 102 deletions

View File

@ -39,37 +39,6 @@ minetest.register_privilege("no_temperature", {
give_to_singleplayer= false,
})
minetest.after(0.1, function()
local groups_to_change={}
for i,v in pairs(tempsurvive.nodes) do
if string.find(i,":")==nil then
groups_to_change[i]=v
elseif minetest.registered_nodes[i] then
local group=table.copy(minetest.registered_nodes[i].groups or {})
group.tempsurvive=1
group.tempsurvive_add=v.add
group.tempsurvive_rad=v.rad
minetest.override_item(i, {groups=group})
end
end
for i,v in pairs(minetest.registered_nodes) do
for ii,vv in pairs(groups_to_change) do
if v.groups[ii] then
local group=table.copy(v.groups or {})
group.tempsurvive=1
group.tempsurvive_add=vv.add
group.tempsurvive_rad=vv.rad
minetest.override_item(i, {groups=group})
tempsurvive.nodes[i]={add=vv.add,rad=vv.rad}
end
end
end
for ii,vv in pairs(groups_to_change) do
tempsurvive.nodes[ii]=nil
end
end)
tempsurvive.exposed=function(pos1,pos2,add)
local d=vector.distance(pos1,pos2)
if d<1 then
@ -146,6 +115,22 @@ tempsurvive.get_bio_temperature=function(pos)
end
end
tempsurvive.get_artificial_temperature=function(pos,temp)
local a=minetest.find_nodes_in_area({x=pos.x-3, y=pos.y-3, z=pos.z-3}, {x=pos.x+3, y=pos.y+3, z=pos.z+3}, {"group:tempsurvive"})
for i,no in pairs(a) do
local name=minetest.get_node(no).name
local add=0
local rad=minetest.get_item_group(name,"tempsurvive_rad")
if minetest.get_item_group(name,"tempsurvive_temp_by_meta")>0 then
add=add+minetest.get_meta(no):get_int("temp")
else
add=minetest.get_item_group(name,"tempsurvive_add")
end
temp=temp+tempsurvive.spread_temperature(pos,no,add,rad)
end
return temp
end
minetest.register_globalstep(function(dtime)
if tempsurvive.step_timer>tempsurvive.step_time then
tempsurvive.step_timer=0
@ -168,19 +153,7 @@ minetest.register_globalstep(function(dtime)
local cr=ptemp.coldness_resistance-ptemp.warming
local hr=ptemp.heat_resistance+ptemp.cooling
local a=minetest.find_nodes_in_area({x=pos.x-3, y=pos.y-3, z=pos.z-3}, {x=pos.x+3, y=pos.y+3, z=pos.z+3}, {"group:tempsurvive"})
for i,no in pairs(a) do
local name=minetest.get_node(no).name
local add=minetest.get_item_group(name,"tempsurvive_add")
local rad=minetest.get_item_group(name,"tempsurvive_rad")
if minetest.get_item_group(name,"tempsurvive_temp_by_meta")>0 then
add=add+minetest.get_meta(pos):get_int("temp")
end
temp=temp+tempsurvive.spread_temperature(pos,no,add,rad)
end
temp=tempsurvive.get_artificial_temperature(pos,temp)
ptemp.temp=ptemp.temp-(math.floor(ptemp.temp-temp)*tempsurvive.speed)
@ -272,7 +245,7 @@ tempsurvive.cloth_update=function(player)
end
end
if armor then
if tempsurvive.armor then
player:set_properties({
mesh="3d_armor_character.b3d",
textures={

View File

@ -3,6 +3,7 @@ tempsurvive={
step_timer=0,
step_time=1,
player={},
armor=minetest.get_modpath("3d_armor"),
perlin={
offset=50,
scale=50,
@ -20,7 +21,7 @@ tempsurvive={
number=40,
size={x=24,y=4},
direction=0,
offset={x=-244, y=-88}, --offset={x=-265, y=-88},
offset={x=-244, y=-88},
},
clothes={},
screen={
@ -31,12 +32,43 @@ tempsurvive={
},
nodes={
["snowy"]={add=-1,rad=2},
["default:ice"]={add=-2,rad=3},
["puts_out_fire"]={add=-2,rad=3},
["water"]={add=-10,rad=0},
["torch"]={add=5,rad=5},
["igniter"]={add=15,rad=5},
["default:furnace_active"]={add=10,rad=10},
}
}
dofile(minetest.get_modpath("tempsurvive") .. "/functions.lua")
dofile(minetest.get_modpath("tempsurvive") .. "/nodes_items.lua")
dofile(minetest.get_modpath("tempsurvive") .. "/nodes_items.lua")
minetest.after(0.1, function()
local groups_to_change={}
for i,v in pairs(tempsurvive.nodes) do
if string.find(i,":")==nil then
groups_to_change[i]=v
elseif minetest.registered_nodes[i] then
local group=table.copy(minetest.registered_nodes[i].groups or {})
group.tempsurvive=1
group.tempsurvive_add=v.add
group.tempsurvive_rad=v.rad
minetest.override_item(i, {groups=group})
end
end
for i,v in pairs(minetest.registered_nodes) do
for ii,vv in pairs(groups_to_change) do
if v.groups[ii] then
local group=table.copy(v.groups or {})
group.tempsurvive=1
group.tempsurvive_add=vv.add
group.tempsurvive_rad=vv.rad
minetest.override_item(i, {groups=group})
tempsurvive.nodes[i]={add=vv.add,rad=vv.rad}
end
end
end
for ii,vv in pairs(groups_to_change) do
tempsurvive.nodes[ii]=nil
end
end)

View File

@ -33,6 +33,171 @@ tempsurvive.register_cloth("blue","0000ff",4,{{"wool:blue"}})
tempsurvive.register_cloth("lightblue","0081ff",8,{{"wool:blue","wool:white"}})
tempsurvive.register_cloth("darkblue","000044",4,{{"wool:blue","wool:black"}})
minetest.register_node("tempsurvive:fire", {
tiles = {
{
name="fire_basic_flame_animated.png",
animation={
type="vertical_frames",
aspect_w=16,
aspect_h=16,
length=1,
}
}
},
groups = {not_in_creative_inventory=1},
drawtype="firelike",
paramtype="light",
light_source=13,
sunlight_propagetes=true,
drop="",
})
minetest.register_node("tempsurvive:cold_fire", {
tiles = {
{
name="fire_basic_flame_animated.png^[colorize:#000055aa",
animation={
type="vertical_frames",
aspect_w=16,
aspect_h=16,
length=1,
}
}
},
groups = {not_in_creative_inventory=1},
drawtype="firelike",
paramtype="light",
light_source=13,
sunlight_propagetes=true,
drop="",
})
minetest.register_craft({
output = "tempsurvive:stove",
recipe = {
{"default:stone_block","default:stone_block","default:stone_block"},
{"","default:glass","default:stone_block"},
{"default:stone_block","default:stone_block","default:stone_block"},
}
})
minetest.register_node("tempsurvive:stove", {
description = "stove",
groups = {cracky=3,tempsurvive_temp_by_meta=1,tempsurvive_rad=15,tempsurvive=1},
tiles={"tempsurvive_stove.png"},
drawtype="mesh",
mesh="tempsurvive_stove.obj",
paramtype="light",
paramtype2="facedir",
paramtype2="facedir",
selection_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 1.5, 0.5},
}
},
collision_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 1.5, 0.5},
}
},
on_timer = function (pos, elapsed)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local slot=meta:get_int("slot")
local stack=inv:get_stack("burning",slot)
local ind=slot
if inv:get_stack("burning",slot):get_name()=="" then
local slots={1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9}
for i=slot,slot+9 do
ind=i
slot=slots[i]
stack=inv:get_stack("burning",slot)
if stack:get_count()>0 then
break
end
end
end
local time=minetest.get_craft_result({method="fuel", width=1, items={stack:get_name()}}).time
if time==0 then time=minetest.get_item_group(stack:get_name(),"flammable") end
if time==0 then time=minetest.get_item_group(stack:get_name(),"igniter") end
if time==0 then time=minetest.get_item_group(stack:get_name(),"tempsurvive_add") end
meta:set_int("power",meta:get_int("power")+time)
stack:set_count(stack:get_count()-1)
inv:set_stack("burning",slot,stack)
if time==0 then
minetest.remove_node({x=pos.x,y=pos.y+1,z=pos.z})
meta:set_int("temp",0)
meta:set_int("power",0)
return
elseif math.abs(meta:get_int("temp"))<math.abs(meta:get_int("power")) then
meta:set_int("temp",meta:get_int("power"))
end
if meta:get_int("power")>0 then
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="tempsurvive:fire"})
else
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="tempsurvive:cold_fire"})
end
slot=slot+1
if slot>9 or ind>=9 then
slot=1
meta:set_int("temp",meta:get_int("power"))
meta:set_int("power",0)
end
meta:set_int("slot",slot)
minetest.get_node_timer(pos):start(math.abs(time))
end,
on_construct=function(pos)
minetest.get_node_timer(pos):start(math.random(5,10))
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
meta:set_int("power", 0)
meta:set_int("temp", 0)
meta:set_int("slot", 1)
inv:set_size("burning", 9)
meta:set_string("formspec",
"size[8,8]"
.."list[current_name;burning;2.5,0;3,3;]"
.."list[current_player;main;0,4;8,32;]"
.."listring[current_player;main]"
.."listring[current_name;burning]"
)
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local item=stack:get_name()
local time=minetest.get_craft_result({method="fuel", width=1, items={item}}).time + minetest.get_item_group(item,"flammable") + minetest.get_item_group(item,"igniter") + minetest.get_item_group(stack:get_name(),"tempsurvive_add")
if time==0 then
return 0
end
if not minetest.get_node_timer(pos):is_started() then
minetest.get_node_timer(pos):start(0.2)
end
return stack:get_count()
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
return 0
end,
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
return 0
end,
on_destruct = function(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
minetest.remove_node({x=pos.x,y=pos.y+1,z=pos.z})
for i=1,9 do
minetest.add_item(pos, inv:get_stack("burning",i))
end
end,
})
minetest.register_craftitem("tempsurvive:plank_with_stick", {
description = "Plank with stick",
inventory_image = "tempsurvive_plank_with_stick.png",
@ -68,7 +233,7 @@ minetest.register_node("tempsurvive:keepable_fire", {
}
}
},
groups = {dig_immediate=3,igniter=2,not_in_creative_inventory=1,tempsurvive_rad=15,tempsurvive=1},
groups = {dig_immediate=3,igniter=2,not_in_creative_inventory=1,tempsurvive_temp_by_meta=1,tempsurvive_rad=15,tempsurvive=1},
drawtype="firelike",
paramtype="light",
light_source=12,
@ -79,28 +244,17 @@ minetest.register_node("tempsurvive:keepable_fire", {
on_timer = function (pos, elapsed)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local stack=inv:get_stack("burning",1)
local slot=meta:get_int("slot")
local stack=inv:get_stack("burning",slot)
local ind=slot
for i=slot,9 do
stack=inv:get_stack("burning",i)
slot=i
if stack:get_count()~=0 then
break
end
end
if slot==9 then
meta:set_int("temp",meta:get_int("power"))
meta:set_int("power",0)
end
if stack:get_count()==0 then
for i=1,9 do
stack=inv:get_stack("burning",i)
if stack:get_count()~=0 then
slot=i
if inv:get_stack("burning",slot):get_name()=="" then
local slots={1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9}
for i=slot,slot+9 do
ind=i
slot=slots[i]
stack=inv:get_stack("burning",slot)
if stack:get_count()>0 then
break
end
end
@ -109,6 +263,10 @@ minetest.register_node("tempsurvive:keepable_fire", {
local time=minetest.get_craft_result({method="fuel", width=1, items={stack:get_name()}}).time
if time==0 then time=minetest.get_item_group(stack:get_name(),"flammable") end
if time==0 then time=minetest.get_item_group(stack:get_name(),"igniter") end
if time==0 and stack:get_count()>0 and meta:get_int("slot")~=slot and meta:get_int("power")>0 then
time=1
end
meta:set_int("power",meta:get_int("power")+time)
stack:set_count(stack:get_count()-1)
@ -117,14 +275,15 @@ minetest.register_node("tempsurvive:keepable_fire", {
if time==0 then
minetest.remove_node(pos)
return
elseif slot==9 or meta:get_int("temp")<meta:get_int("power") then
elseif meta:get_int("temp")<meta:get_int("power") then
meta:set_int("temp",meta:get_int("power"))
end
slot=slot+1
if slot>9 then
if slot>9 or ind>=9 then
slot=1
meta:set_int("temp",meta:get_int("power"))
meta:set_int("power",0)
end
meta:set_int("slot",slot)
minetest.get_node_timer(pos):start(time)
end,
@ -135,8 +294,8 @@ minetest.register_node("tempsurvive:keepable_fire", {
local inv = meta:get_inventory()
meta:set_int("power", 0)
meta:set_int("temp", 0)
meta:set_int("slot", 1)
inv:set_size("burning", 9)
inv:set_size("slot", 1)
meta:set_string("formspec",
"size[8,8]"
.."list[current_name;burning;2.5,0;3,3;]"
@ -146,12 +305,6 @@ minetest.register_node("tempsurvive:keepable_fire", {
)
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local item=stack:get_name()
local time=minetest.get_craft_result({method="fuel", width=1, items={item}}).time + minetest.get_item_group(item,"flammable") + minetest.get_item_group(item,"igniter")
if time==0 then
return 0
end
local meta = minetest.get_meta(pos)
return stack:get_count()
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
@ -242,17 +395,7 @@ minetest.register_node("tempsurvive:thermometer", {
on_use=function(itemstack, user, pointed_thing)
local pos=pointed_thing.above or user:get_pos()
local temp=tempsurvive.get_bio_temperature(pos)
local a=minetest.find_nodes_in_area({x=pos.x-3, y=pos.y-3, z=pos.z-3}, {x=pos.x+3, y=pos.y+3, z=pos.z+3}, {"group:tempsurvive"})
for i,no in pairs(a) do
local name=minetest.get_node(no).name
local add=minetest.get_item_group(name,"tempsurvive_add")
local rad=minetest.get_item_group(name,"tempsurvive_rad")
if minetest.get_item_group(name,"tempsurvive_temp_by_meta")>0 then
add=add+minetest.get_meta(pos):get_int("temp")
end
temp=temp+tempsurvive.spread_temperature(pos,no,add,rad)
end
temp=tempsurvive.get_artificial_temperature(pos,temp)
minetest.chat_send_player(user:get_player_name(), math.floor(temp*10)*0.1)
end,
on_construct = function(pos)
@ -263,18 +406,7 @@ minetest.register_node("tempsurvive:thermometer", {
on_timer = function (pos, elapsed)
local meta=minetest.get_meta(pos)
local temp=tempsurvive.get_bio_temperature(pos)
local a=minetest.find_nodes_in_area({x=pos.x-3, y=pos.y-3, z=pos.z-3}, {x=pos.x+3, y=pos.y+3, z=pos.z+3}, {"group:tempsurvive"})
for i,no in pairs(a) do
local name=minetest.get_node(no).name
local add=minetest.get_item_group(name,"tempsurvive_add")
local rad=minetest.get_item_group(name,"tempsurvive_rad")
if minetest.get_item_group(name,"tempsurvive_temp_by_meta")>0 then
add=add+minetest.get_meta(pos):get_int("temp")
end
temp=temp+tempsurvive.spread_temperature(pos,no,add,rad)
end
temp=tempsurvive.get_artificial_temperature(pos,temp)
meta:set_string("infotext", math.floor(temp*10)*0.1)
return true
end,